diff options
author | thegeorg <thegeorg@yandex-team.com> | 2022-11-02 12:00:25 +0300 |
---|---|---|
committer | thegeorg <thegeorg@yandex-team.com> | 2022-11-02 12:00:25 +0300 |
commit | 56086cfd6edecd0aec84a9b19ebf508e65b79e9d (patch) | |
tree | b07862bc7090d55666c870cb063c3ce0f46b6f5b /contrib/libs | |
parent | e3ffb0af25c5c456263ecb50cd8d4cec27e37dc4 (diff) | |
download | ydb-56086cfd6edecd0aec84a9b19ebf508e65b79e9d.tar.gz |
Cleanup unused grpc targets
* Merge grpc (core), grpc++ and gpr libraries into contrib/libs/grpc
* Drop unused grpc_unsecure, grpc++_unsecure and grpc++_error_details
* Remove abundance of hacks from import routine
Diffstat (limited to 'contrib/libs')
61 files changed, 3534 insertions, 3254 deletions
diff --git a/contrib/libs/grpc/CMakeLists.txt b/contrib/libs/grpc/CMakeLists.txt index 4f25d8832f..6c2673734c 100644 --- a/contrib/libs/grpc/CMakeLists.txt +++ b/contrib/libs/grpc/CMakeLists.txt @@ -6,15 +6,766 @@ # original buildsystem will not be accepted. -add_subdirectory(grpc) -add_subdirectory(grpc++) +find_package(OpenSSL REQUIRED) +find_package(ZLIB REQUIRED) +find_package(c-ares REQUIRED) add_subdirectory(src) add_subdirectory(third_party) -add_library(contrib-libs-grpc INTERFACE) -target_link_libraries(contrib-libs-grpc INTERFACE +add_library(contrib-libs-grpc) +target_compile_options(contrib-libs-grpc PRIVATE + -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 + -Wno-everything +) +target_include_directories(contrib-libs-grpc PUBLIC + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/include +) +target_include_directories(contrib-libs-grpc PRIVATE + ${CMAKE_SOURCE_DIR}/contrib/libs/c-ares/include + ${CMAKE_BINARY_DIR}/contrib/libs/grpc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/address_sorting/include + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb + ${CMAKE_SOURCE_DIR}/contrib/libs/re2 + ${CMAKE_SOURCE_DIR}/contrib/libs/xxhash +) +target_link_libraries(contrib-libs-grpc PUBLIC contrib-libs-cxxsupp yutil - libs-grpc-grpc - libs-grpc-grpc++ + certs + c-ares::c-ares + grpc-third_party-address_sorting + grpc-third_party-upb + OpenSSL::OpenSSL + contrib-libs-re2 + contrib-libs-xxhash + ZLIB::ZLIB + abseil-cpp-tstring-y_absl-algorithm + abseil-cpp-tstring-y_absl-base + abseil-cpp-tstring-y_absl-container + abseil-cpp-tstring-y_absl-functional + abseil-cpp-tstring-y_absl-hash + abseil-cpp-tstring-y_absl-meta + abseil-cpp-tstring-y_absl-status + abseil-cpp-tstring-y_absl-strings + abseil-cpp-tstring-y_absl-synchronization + abseil-cpp-tstring-y_absl-time + abseil-cpp-tstring-y_absl-types + abseil-cpp-tstring-y_absl-utility + library-cpp-resource +) +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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_plugin.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.cc + ${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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc + ${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_channel_secure.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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc + ${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.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/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_registry.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/server_address.cc + ${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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/http_filters_plugin.cc + ${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/server_config_selector/server_config_selector.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/service_config/service_config.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/service_config/service_config_parser.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create_impl.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/security_policy_setting.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/security_policy/binder_security_policy.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_android.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/alpn/alpn.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/client/insecure/channel_create.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.cc + ${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_plugin.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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_utils.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/http2_settings.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/huffsyms.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/parsing.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_lists.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/varint.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/writing.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_plugin.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.cc + ${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/annotations/deprecation.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c + ${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/extensions/clusters/aggregate/v3/cluster.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http.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/semantic_version.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c + ${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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.c + ${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/type/v3/typed_struct.upb.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/annotations/deprecation.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c + ${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/extensions/clusters/aggregate/v3/cluster.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/http.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/semantic_version.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c + ${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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.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_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_stats.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_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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_args.cc + ${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_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/status_util.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/compression.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/compression_args.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/compression_internal.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/message_compress.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/stream_compression.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/stream_compression_gzip.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/stream_compression_identity.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/config/core_configuration.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/debug/stats.cc + ${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/event_engine.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/event_engine_factory.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/sockaddr.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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/murmur_hash.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/string.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/string_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/string_util_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/string_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/sync.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/sync_abseil.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/sync_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/sync_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/time.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/time_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/time_precise.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/time_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/tmpfile_msys.cc + ${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/arena.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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/host_port.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/mpscq.cc + ${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/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_util.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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/parser.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/buffer_list.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/call_combiner.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/cfstream_handle.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/combiner.cc + ${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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/gethostname_host_name_max.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/gethostname_sysconf.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iocp_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_custom.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_internal.cc + ${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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset_custom.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset_set.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset_set_custom.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset_set_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/resolve_address.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_custom.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_factory_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_mutator.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_linux.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_client.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_cfstream.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_custom.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_custom.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_custom.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_common.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc + ${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_custom.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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer_manager.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/unix_sockets_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/unix_sockets_posix_noop.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_eventfd.cc + ${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_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/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/resource_quota/api.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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/sdk_server_authz_filter.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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/credentials_metadata.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_request_signer.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/google_default/credentials_generic.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.cc + ${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_arcadia_root_certs.cpp + ${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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils_config.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/transport/client_auth_filter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/transport/server_auth_filter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/transport/tsi_error.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/util/json_util.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/b64.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/percent_encoding.cc + ${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_intern.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/slice/static_slice.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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/byte_buffer.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/byte_buffer_reader.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/call.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/call_details.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/call_log_batch.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/channel.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/channel_init.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/channel_ping.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/channel_stack_type.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/completion_queue.cc + ${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_secure.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/metadata.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/static_metadata.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/status_conversion.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/status_metadata.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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/uri/uri_parser.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/crypt/aes_gcm.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/crypt/gsec.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_counter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_crypter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_frame_protector.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/frame_handler.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_shared_resource.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_utils.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/handshaker/transport_security_common_api.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/fake_transport_security.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/local_transport_security.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_cache.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/transport_security.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/transport_security_grpc.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/channel_cc.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/client_callback.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/client_context.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/client_interceptor.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/create_channel.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/create_channel_internal.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/create_channel_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/credentials_cc.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/insecure_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/secure_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/xds_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/codegen/codegen_init.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/alarm.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/auth_property_iterator.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/channel_arguments.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/channel_filter.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/core_codegen.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/resource_quota_cc.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/rpc_method.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/secure_auth_context.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/secure_channel_arguments.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/secure_create_auth_context.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/tls_certificate_provider.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/tls_certificate_verifier.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/tls_credentials_options.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/validate_service_config.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/version_cc.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/async_generic_service.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/channel_argument_option.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/create_default_thread_pool.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/health/default_health_check_service.cc + ${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/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 + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_cc.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_context.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_posix.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/xds_server_credentials.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/thread_manager/thread_manager.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/util/byte_buffer_cc.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/util/status.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/util/string_ref.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/util/time_cc.cc ) diff --git a/contrib/libs/grpc/grpc++/CMakeLists.txt b/contrib/libs/grpc/grpc++/CMakeLists.txt deleted file mode 100644 index d5d60bda1e..0000000000 --- a/contrib/libs/grpc/grpc++/CMakeLists.txt +++ /dev/null @@ -1,115 +0,0 @@ - -# This file was gererated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - -find_package(OpenSSL REQUIRED) - -add_library(libs-grpc-grpc++) -target_compile_options(libs-grpc-grpc++ PRIVATE - -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 - -Wno-everything -) -target_include_directories(libs-grpc-grpc++ PUBLIC - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/include -) -target_include_directories(libs-grpc-grpc++ PRIVATE - ${CMAKE_BINARY_DIR}/contrib/libs/grpc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb -) -target_link_libraries(libs-grpc-grpc++ PUBLIC - contrib-libs-cxxsupp - yutil - libs-grpc-grpc - src-core-lib - grpc-third_party-address_sorting - grpc-third_party-upb - OpenSSL::OpenSSL - abseil-cpp-tstring-y_absl-container - abseil-cpp-tstring-y_absl-hash - abseil-cpp-tstring-y_absl-status - abseil-cpp-tstring-y_absl-strings - abseil-cpp-tstring-y_absl-synchronization - abseil-cpp-tstring-y_absl-time -) -target_sources(libs-grpc-grpc++ PRIVATE - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create_impl.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/client/security_policy_setting.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/security_policy/binder_security_policy.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/utils/transport_stream_receiver_impl.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_android.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/channel_cc.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/client_callback.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/client_context.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/client_interceptor.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/create_channel.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/create_channel_internal.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/create_channel_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/credentials_cc.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/insecure_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/secure_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/client/xds_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/codegen/codegen_init.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/alarm.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/auth_property_iterator.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/channel_arguments.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/channel_filter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/core_codegen.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/resource_quota_cc.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/rpc_method.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/secure_auth_context.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/secure_channel_arguments.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/secure_create_auth_context.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/tls_certificate_provider.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/tls_certificate_verifier.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/tls_credentials_options.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/validate_service_config.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/common/version_cc.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/async_generic_service.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/channel_argument_option.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/create_default_thread_pool.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/health/default_health_check_service.cc - ${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/load_reporter/get_cpu_stats_linux.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_macos.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_unsupported.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/load_reporter/load_data_store.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/load_reporter/util.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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_cc.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_context.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/xds_server_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/thread_manager/thread_manager.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/util/byte_buffer_cc.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/util/status.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/util/string_ref.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/util/time_cc.cc -) diff --git a/contrib/libs/grpc/grpc/CMakeLists.txt b/contrib/libs/grpc/grpc/CMakeLists.txt deleted file mode 100644 index a7d4f93e99..0000000000 --- a/contrib/libs/grpc/grpc/CMakeLists.txt +++ /dev/null @@ -1,652 +0,0 @@ - -# This file was gererated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - -find_package(OpenSSL REQUIRED) -find_package(ZLIB REQUIRED) -find_package(c-ares REQUIRED) - -add_library(libs-grpc-grpc) -target_compile_options(libs-grpc-grpc PRIVATE - -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 - -Wno-everything -) -target_include_directories(libs-grpc-grpc PUBLIC - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/include -) -target_include_directories(libs-grpc-grpc PRIVATE - ${CMAKE_SOURCE_DIR}/contrib/libs/c-ares/include - ${CMAKE_BINARY_DIR}/contrib/libs/grpc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/address_sorting/include - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb - ${CMAKE_SOURCE_DIR}/contrib/libs/re2 - ${CMAKE_SOURCE_DIR}/contrib/libs/xxhash -) -target_link_libraries(libs-grpc-grpc PUBLIC - contrib-libs-cxxsupp - yutil - certs - c-ares::c-ares - src-core-lib - grpc-third_party-address_sorting - grpc-third_party-upb - OpenSSL::OpenSSL - contrib-libs-re2 - contrib-libs-xxhash - ZLIB::ZLIB - abseil-cpp-tstring-y_absl-algorithm - abseil-cpp-tstring-y_absl-base - abseil-cpp-tstring-y_absl-functional - abseil-cpp-tstring-y_absl-hash - abseil-cpp-tstring-y_absl-meta - abseil-cpp-tstring-y_absl-status - abseil-cpp-tstring-y_absl-strings - abseil-cpp-tstring-y_absl-synchronization - abseil-cpp-tstring-y_absl-time - abseil-cpp-tstring-y_absl-types - abseil-cpp-tstring-y_absl-utility - library-cpp-resource -) -target_sources(libs-grpc-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/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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_plugin.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.cc - ${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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc - ${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_channel_secure.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/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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc - ${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.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/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_registry.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/server_address.cc - ${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/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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/http_filters_plugin.cc - ${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/server_config_selector/server_config_selector.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/service_config/service_config.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/service_config/service_config_parser.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/alpn/alpn.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/client/insecure/channel_create.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.cc - ${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_plugin.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/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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_utils.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/http2_settings.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/huffsyms.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/parsing.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_lists.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/varint.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/writing.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_plugin.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.cc - ${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/annotations/deprecation.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c - ${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/extensions/clusters/aggregate/v3/cluster.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.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/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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http.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/semantic_version.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c - ${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/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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.c - ${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/type/v3/typed_struct.upb.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/annotations/deprecation.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c - ${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/extensions/clusters/aggregate/v3/cluster.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/http.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/semantic_version.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c - ${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/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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.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_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_stats.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_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/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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_args.cc - ${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_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/status_util.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/compression.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/compression_args.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/compression_internal.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/message_compress.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/stream_compression.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/stream_compression_gzip.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/stream_compression_identity.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/config/core_configuration.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/debug/stats.cc - ${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/event_engine.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/event_engine_factory.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/sockaddr.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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/parser.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/buffer_list.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/call_combiner.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/cfstream_handle.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/combiner.cc - ${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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/gethostname_host_name_max.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/gethostname_sysconf.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iocp_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_custom.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_internal.cc - ${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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset_custom.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset_set.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset_set_custom.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset_set_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/pollset_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/resolve_address.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_custom.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_factory_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_mutator.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_linux.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/socket_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_client.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_cfstream.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_custom.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_custom.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_custom.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_common.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc - ${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_custom.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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer_manager.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/unix_sockets_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/unix_sockets_posix_noop.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_eventfd.cc - ${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_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/matchers/matchers.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/promise/activity.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/api.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/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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/sdk_server_authz_filter.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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/credentials_metadata.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_request_signer.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/google_default/credentials_generic.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.cc - ${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_arcadia_root_certs.cpp - ${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/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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils_config.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/transport/client_auth_filter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/transport/server_auth_filter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/transport/tsi_error.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/util/json_util.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/b64.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/percent_encoding.cc - ${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_intern.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/slice/static_slice.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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/byte_buffer.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/byte_buffer_reader.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/call.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/call_details.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/call_log_batch.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/channel.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/channel_init.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/channel_ping.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/channel_stack_type.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/completion_queue.cc - ${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_secure.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/metadata.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/static_metadata.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/status_conversion.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/status_metadata.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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/uri/uri_parser.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/crypt/aes_gcm.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/crypt/gsec.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_counter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_crypter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_frame_protector.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/frame_protector/frame_handler.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_shared_resource.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_utils.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/handshaker/transport_security_common_api.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/fake_transport_security.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/local_transport_security.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_cache.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/transport_security.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/tsi/transport_security_grpc.cc -) diff --git a/contrib/libs/grpc/include/grpcpp/ext/server_load_reporting.h b/contrib/libs/grpc/include/grpcpp/ext/server_load_reporting.h deleted file mode 100644 index 987a48ee79..0000000000 --- a/contrib/libs/grpc/include/grpcpp/ext/server_load_reporting.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * 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_EXT_SERVER_LOAD_REPORTING_H -#define GRPCPP_EXT_SERVER_LOAD_REPORTING_H - -#include <grpc/support/port_platform.h> - -#include <grpc/load_reporting.h> -#include <grpcpp/impl/codegen/config.h> -#include <grpcpp/impl/codegen/server_context.h> -#include <grpcpp/impl/server_builder_option.h> - -namespace grpc { -namespace load_reporter { -namespace experimental { - -// The ServerBuilderOption to enable server-side load reporting feature. To -// enable the feature, please make sure the binary builds with the -// grpcpp_server_load_reporting library and set this option in the -// ServerBuilder. -class LoadReportingServiceServerBuilderOption - : public grpc::ServerBuilderOption { - public: - void UpdateArguments(::grpc::ChannelArguments* args) override; - void UpdatePlugins(std::vector<std::unique_ptr<::grpc::ServerBuilderPlugin>>* - plugins) override; -}; - -// Adds the load reporting cost with \a cost_name and \a cost_value in the -// trailing metadata of the server context. -void AddLoadReportingCost(grpc::ServerContext* ctx, - const TString& cost_name, double cost_value); - -} // namespace experimental -} // namespace load_reporter -} // namespace grpc - -#endif // GRPCPP_EXT_SERVER_LOAD_REPORTING_H diff --git a/contrib/libs/grpc/include/grpcpp/security/alts_context.h b/contrib/libs/grpc/include/grpcpp/security/alts_context.h deleted file mode 100644 index 125d25310f..0000000000 --- a/contrib/libs/grpc/include/grpcpp/security/alts_context.h +++ /dev/null @@ -1,69 +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 GRPCPP_SECURITY_ALTS_CONTEXT_H -#define GRPCPP_SECURITY_ALTS_CONTEXT_H - -#include <map> -#include <memory> - -#include <grpc/grpc_security_constants.h> -#include <grpcpp/security/auth_context.h> - -struct grpc_gcp_AltsContext; - -namespace grpc { -namespace experimental { - -// AltsContext is a wrapper class for grpc_gcp_AltsContext. -class AltsContext { - public: - struct RpcProtocolVersions { - struct Version { - int major_version; - int minor_version; - }; - Version max_rpc_version; - Version min_rpc_version; - }; - explicit AltsContext(const grpc_gcp_AltsContext* ctx); - AltsContext& operator=(const AltsContext&) = default; - AltsContext(const AltsContext&) = default; - - TString application_protocol() const; - TString record_protocol() const; - TString peer_service_account() const; - TString local_service_account() const; - grpc_security_level security_level() const; - RpcProtocolVersions peer_rpc_versions() const; - const std::map<TString, TString>& peer_attributes() const; - - private: - TString application_protocol_; - TString record_protocol_; - TString peer_service_account_; - TString local_service_account_; - grpc_security_level security_level_ = GRPC_SECURITY_NONE; - RpcProtocolVersions peer_rpc_versions_ = {{0, 0}, {0, 0}}; - std::map<TString, TString> peer_attributes_map_; -}; - -} // namespace experimental -} // namespace grpc - -#endif // GRPCPP_SECURITY_ALTS_CONTEXT_H diff --git a/contrib/libs/grpc/include/grpcpp/security/alts_util.h b/contrib/libs/grpc/include/grpcpp/security/alts_util.h deleted file mode 100644 index 25322e31ce..0000000000 --- a/contrib/libs/grpc/include/grpcpp/security/alts_util.h +++ /dev/null @@ -1,50 +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 GRPCPP_SECURITY_ALTS_UTIL_H -#define GRPCPP_SECURITY_ALTS_UTIL_H - -#include <memory> - -#include <grpc/grpc_security_constants.h> -#include <grpcpp/impl/codegen/status.h> -#include <grpcpp/security/alts_context.h> -#include <grpcpp/security/auth_context.h> - -struct grpc_gcp_AltsContext; - -namespace grpc { -namespace experimental { - -// GetAltsContextFromAuthContext helps to get the AltsContext from AuthContext. -// If ALTS is not the transport security protocol used to establish the -// connection, this function will return nullptr. -std::unique_ptr<AltsContext> GetAltsContextFromAuthContext( - const std::shared_ptr<const AuthContext>& auth_context); - -// This utility function performs ALTS client authorization check on server -// side, i.e., checks if the client identity matches one of the expected service -// accounts. It returns OK if client is authorized and an error otherwise. -grpc::Status AltsClientAuthzCheck( - const std::shared_ptr<const AuthContext>& auth_context, - const std::vector<TString>& expected_service_accounts); - -} // namespace experimental -} // namespace grpc - -#endif // GRPCPP_SECURITY_ALTS_UTIL_H diff --git a/contrib/libs/grpc/include/grpcpp/support/error_details.h b/contrib/libs/grpc/include/grpcpp/support/error_details.h deleted file mode 100644 index 72305e8f3a..0000000000 --- a/contrib/libs/grpc/include/grpcpp/support/error_details.h +++ /dev/null @@ -1,76 +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 GRPCPP_SUPPORT_ERROR_DETAILS_H -#define GRPCPP_SUPPORT_ERROR_DETAILS_H - -#include <grpcpp/support/status.h> - -namespace grpc { - -/// Map a \a grpc::Status to a \a google::rpc::Status. -/// The given \a to object will be cleared. -/// On success, returns status with OK. -/// Returns status with \a INVALID_ARGUMENT, if failed to deserialize. -/// Returns status with \a FAILED_PRECONDITION, if \a to is nullptr. -/// -/// \note -/// This function is a template to avoid a build dep on \a status.proto. -/// However, this function still requires that \tparam T is of type -/// \a google::rpc::Status, which is defined at -/// https://github.com/googleapis/googleapis/blob/master/google/rpc/status.proto -template <typename T> -grpc::Status ExtractErrorDetails(const grpc::Status& from, T* to) { - if (to == nullptr) { - return grpc::Status(grpc::StatusCode::FAILED_PRECONDITION, ""); - } - if (!to->ParseFromString(from.error_details())) { - return grpc::Status(grpc::StatusCode::INVALID_ARGUMENT, ""); - } - return grpc::Status::OK; -} -inline grpc::Status ExtractErrorDetails(const grpc::Status&, std::nullptr_t) { - return grpc::Status(grpc::StatusCode::FAILED_PRECONDITION, ""); -} - -/// Map \a google::rpc::Status to a \a grpc::Status. -/// Returns OK on success. -/// Returns status with \a FAILED_PRECONDITION if \a to is nullptr. -/// -/// \note -/// This function is a template to avoid a build dep on \a status.proto. -/// However, this function still requires that \tparam T is of type -/// \a google::rpc::Status, which is defined at -/// https://github.com/googleapis/googleapis/blob/master/google/rpc/status.proto -template <typename T> -grpc::Status SetErrorDetails(const T& from, grpc::Status* to) { - if (to == nullptr) { - return grpc::Status(grpc::StatusCode::FAILED_PRECONDITION, ""); - } - grpc::StatusCode code = grpc::StatusCode::UNKNOWN; - if (from.code() >= grpc::StatusCode::OK && - from.code() <= grpc::StatusCode::UNAUTHENTICATED) { - code = static_cast<grpc::StatusCode>(from.code()); - } - *to = grpc::Status(code, from.message(), from.SerializeAsString()); - return grpc::Status::OK; -} - -} // namespace grpc - -#endif // GRPCPP_SUPPORT_ERROR_DETAILS_H diff --git a/contrib/libs/grpc/src/CMakeLists.txt b/contrib/libs/grpc/src/CMakeLists.txt index e78afa34c8..844d35fa77 100644 --- a/contrib/libs/grpc/src/CMakeLists.txt +++ b/contrib/libs/grpc/src/CMakeLists.txt @@ -7,4 +7,3 @@ add_subdirectory(compiler) -add_subdirectory(core) diff --git a/contrib/libs/grpc/src/compiler/csharp_generator.cc b/contrib/libs/grpc/src/compiler/csharp_generator.cc new file mode 100644 index 0000000000..7b2c7899dc --- /dev/null +++ b/contrib/libs/grpc/src/compiler/csharp_generator.cc @@ -0,0 +1,829 @@ +/* + * + * 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 "src/compiler/csharp_generator.h" + +#include <cctype> +#include <map> +#include <sstream> +#include <vector> + +#include "src/compiler/config.h" +#include "src/compiler/csharp_generator_helpers.h" + +using grpc::protobuf::Descriptor; +using grpc::protobuf::FileDescriptor; +using grpc::protobuf::MethodDescriptor; +using grpc::protobuf::ServiceDescriptor; +using grpc::protobuf::io::Printer; +using grpc::protobuf::io::StringOutputStream; +using grpc_generator::StringReplace; +using std::vector; + +namespace grpc_csharp_generator { +namespace { + +// This function is a massaged version of +// https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc +// Currently, we cannot easily reuse the functionality as +// google/protobuf/compiler/csharp/csharp_doc_comment.h is not a public header. +// TODO(jtattermusch): reuse the functionality from google/protobuf. +bool GenerateDocCommentBodyImpl(grpc::protobuf::io::Printer* printer, + grpc::protobuf::SourceLocation location) { + TString comments = location.leading_comments.empty() + ? location.trailing_comments + : location.leading_comments; + if (comments.empty()) { + return false; + } + // XML escaping... no need for apostrophes etc as the whole text is going to + // be a child + // node of a summary element, not part of an attribute. + comments = grpc_generator::StringReplace(comments, "&", "&", true); + comments = grpc_generator::StringReplace(comments, "<", "<", true); + + std::vector<TString> lines; + grpc_generator::Split(comments, '\n', &lines); + // TODO: We really should work out which part to put in the summary and which + // to put in the remarks... + // but that needs to be part of a bigger effort to understand the markdown + // better anyway. + printer->Print("/// <summary>\n"); + bool last_was_empty = false; + // We squash multiple blank lines down to one, and remove any trailing blank + // lines. We need + // to preserve the blank lines themselves, as this is relevant in the + // markdown. + // Note that we can't remove leading or trailing whitespace as *that's* + // relevant in markdown too. + // (We don't skip "just whitespace" lines, either.) + for (std::vector<TString>::iterator it = lines.begin(); it != lines.end(); + ++it) { + TString line = *it; + if (line.empty()) { + last_was_empty = true; + } else { + if (last_was_empty) { + printer->Print("///\n"); + } + last_was_empty = false; + printer->Print("///$line$\n", "line", *it); + } + } + printer->Print("/// </summary>\n"); + return true; +} + +void GenerateGeneratedCodeAttribute(grpc::protobuf::io::Printer* printer) { + // Mark the code as generated using the [GeneratedCode] attribute. + // We don't provide plugin version info in attribute the because: + // * the version information is not readily available from the plugin's code. + // * it would cause a lot of churn in the pre-generated code + // in this repository every time the version is updated. + printer->Print( + "[global::System.CodeDom.Compiler.GeneratedCode(\"grpc_csharp_plugin\", " + "null)]\n"); +} + +template <typename DescriptorType> +bool GenerateDocCommentBody(grpc::protobuf::io::Printer* printer, + const DescriptorType* descriptor) { + grpc::protobuf::SourceLocation location; + if (!descriptor->GetSourceLocation(&location)) { + return false; + } + return GenerateDocCommentBodyImpl(printer, location); +} + +void GenerateDocCommentServerMethod(grpc::protobuf::io::Printer* printer, + const MethodDescriptor* method) { + if (GenerateDocCommentBody(printer, method)) { + if (method->client_streaming()) { + printer->Print( + "/// <param name=\"requestStream\">Used for reading requests from " + "the client.</param>\n"); + } else { + printer->Print( + "/// <param name=\"request\">The request received from the " + "client.</param>\n"); + } + if (method->server_streaming()) { + printer->Print( + "/// <param name=\"responseStream\">Used for sending responses back " + "to the client.</param>\n"); + } + printer->Print( + "/// <param name=\"context\">The context of the server-side call " + "handler being invoked.</param>\n"); + if (method->server_streaming()) { + printer->Print( + "/// <returns>A task indicating completion of the " + "handler.</returns>\n"); + } else { + printer->Print( + "/// <returns>The response to send back to the client (wrapped by a " + "task).</returns>\n"); + } + } +} + +void GenerateDocCommentClientMethod(grpc::protobuf::io::Printer* printer, + const MethodDescriptor* method, + bool is_sync, bool use_call_options) { + if (GenerateDocCommentBody(printer, method)) { + if (!method->client_streaming()) { + printer->Print( + "/// <param name=\"request\">The request to send to the " + "server.</param>\n"); + } + if (!use_call_options) { + printer->Print( + "/// <param name=\"headers\">The initial metadata to send with the " + "call. This parameter is optional.</param>\n"); + printer->Print( + "/// <param name=\"deadline\">An optional deadline for the call. The " + "call will be cancelled if deadline is hit.</param>\n"); + printer->Print( + "/// <param name=\"cancellationToken\">An optional token for " + "canceling the call.</param>\n"); + } else { + printer->Print( + "/// <param name=\"options\">The options for the call.</param>\n"); + } + if (is_sync) { + printer->Print( + "/// <returns>The response received from the server.</returns>\n"); + } else { + printer->Print("/// <returns>The call object.</returns>\n"); + } + } +} + +TString GetServiceClassName(const ServiceDescriptor* service) { + return service->name(); +} + +TString GetClientClassName(const ServiceDescriptor* service) { + return service->name() + "Client"; +} + +TString GetServerClassName(const ServiceDescriptor* service) { + return service->name() + "Base"; +} + +TString GetCSharpMethodType(const MethodDescriptor* method) { + if (method->client_streaming()) { + if (method->server_streaming()) { + return "grpc::MethodType.DuplexStreaming"; + } else { + return "grpc::MethodType.ClientStreaming"; + } + } else { + if (method->server_streaming()) { + return "grpc::MethodType.ServerStreaming"; + } else { + return "grpc::MethodType.Unary"; + } + } +} + +TString GetCSharpServerMethodType(const MethodDescriptor* method) { + if (method->client_streaming()) { + if (method->server_streaming()) { + return "grpc::DuplexStreamingServerMethod"; + } else { + return "grpc::ClientStreamingServerMethod"; + } + } else { + if (method->server_streaming()) { + return "grpc::ServerStreamingServerMethod"; + } else { + return "grpc::UnaryServerMethod"; + } + } +} + +TString GetServiceNameFieldName() { return "__ServiceName"; } + +TString GetMarshallerFieldName(const Descriptor* message) { + return "__Marshaller_" + + grpc_generator::StringReplace(message->full_name(), ".", "_", true); +} + +TString GetMethodFieldName(const MethodDescriptor* method) { + return "__Method_" + method->name(); +} + +TString GetMethodRequestParamMaybe(const MethodDescriptor* method, + bool invocation_param = false) { + if (method->client_streaming()) { + return ""; + } + if (invocation_param) { + return "request, "; + } + return GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->input_type()) + " request, "; +} + +TString GetAccessLevel(bool internal_access) { + return internal_access ? "internal" : "public"; +} + +TString GetMethodReturnTypeClient(const MethodDescriptor* method) { + if (method->client_streaming()) { + if (method->server_streaming()) { + return "grpc::AsyncDuplexStreamingCall<" + + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->input_type()) + ", " + + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type()) + ">"; + } else { + return "grpc::AsyncClientStreamingCall<" + + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->input_type()) + ", " + + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type()) + ">"; + } + } else { + if (method->server_streaming()) { + return "grpc::AsyncServerStreamingCall<" + + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type()) + ">"; + } else { + return "grpc::AsyncUnaryCall<" + + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type()) + ">"; + } + } +} + +TString GetMethodRequestParamServer(const MethodDescriptor* method) { + if (method->client_streaming()) { + return "grpc::IAsyncStreamReader<" + + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->input_type()) + + "> requestStream"; + } + return GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->input_type()) + " request"; +} + +TString GetMethodReturnTypeServer(const MethodDescriptor* method) { + if (method->server_streaming()) { + return "global::System.Threading.Tasks.Task"; + } + return "global::System.Threading.Tasks.Task<" + + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type()) + ">"; +} + +TString GetMethodResponseStreamMaybe(const MethodDescriptor* method) { + if (method->server_streaming()) { + return ", grpc::IServerStreamWriter<" + + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type()) + + "> responseStream"; + } + return ""; +} + +// Gets vector of all messages used as input or output types. +std::vector<const Descriptor*> GetUsedMessages( + const ServiceDescriptor* service) { + std::set<const Descriptor*> descriptor_set; + std::vector<const Descriptor*> + result; // vector is to maintain stable ordering + for (int i = 0; i < service->method_count(); i++) { + const MethodDescriptor* method = service->method(i); + if (descriptor_set.find(method->input_type()) == descriptor_set.end()) { + descriptor_set.insert(method->input_type()); + result.push_back(method->input_type()); + } + if (descriptor_set.find(method->output_type()) == descriptor_set.end()) { + descriptor_set.insert(method->output_type()); + result.push_back(method->output_type()); + } + } + return result; +} + +void GenerateMarshallerFields(Printer* out, const ServiceDescriptor* service) { + std::vector<const Descriptor*> used_messages = GetUsedMessages(service); + if (used_messages.size() != 0) { + // Generate static helper methods for serialization/deserialization + GenerateGeneratedCodeAttribute(out); + out->Print( + "static void __Helper_SerializeMessage(" + "global::Google.Protobuf.IMessage message, " + "grpc::SerializationContext context)\n" + "{\n"); + out->Indent(); + out->Print( + "#if !GRPC_DISABLE_PROTOBUF_BUFFER_SERIALIZATION\n" + "if (message is global::Google.Protobuf.IBufferMessage)\n" + "{\n"); + out->Indent(); + out->Print( + "context.SetPayloadLength(message.CalculateSize());\n" + "global::Google.Protobuf.MessageExtensions.WriteTo(message, " + "context.GetBufferWriter());\n" + "context.Complete();\n" + "return;\n"); + out->Outdent(); + out->Print( + "}\n" + "#endif\n"); + out->Print( + "context.Complete(" + "global::Google.Protobuf.MessageExtensions.ToByteArray(message));\n"); + out->Outdent(); + out->Print("}\n\n"); + + GenerateGeneratedCodeAttribute(out); + out->Print( + "static class __Helper_MessageCache<T>\n" + "{\n"); + out->Indent(); + out->Print( + "public static readonly bool IsBufferMessage = " + "global::System.Reflection.IntrospectionExtensions.GetTypeInfo(typeof(" + "global::Google.Protobuf.IBufferMessage)).IsAssignableFrom(typeof(T));" + "\n"); + out->Outdent(); + out->Print("}\n\n"); + + GenerateGeneratedCodeAttribute(out); + out->Print( + "static T __Helper_DeserializeMessage<T>(" + "grpc::DeserializationContext context, " + "global::Google.Protobuf.MessageParser<T> parser) " + "where T : global::Google.Protobuf.IMessage<T>\n" + "{\n"); + out->Indent(); + out->Print( + "#if !GRPC_DISABLE_PROTOBUF_BUFFER_SERIALIZATION\n" + "if (__Helper_MessageCache<T>.IsBufferMessage)\n" + "{\n"); + out->Indent(); + out->Print( + "return parser.ParseFrom(context.PayloadAsReadOnlySequence());\n"); + out->Outdent(); + out->Print( + "}\n" + "#endif\n"); + out->Print("return parser.ParseFrom(context.PayloadAsNewBuffer());\n"); + out->Outdent(); + out->Print("}\n\n"); + } + + for (size_t i = 0; i < used_messages.size(); i++) { + const Descriptor* message = used_messages[i]; + GenerateGeneratedCodeAttribute(out); + out->Print( + "static readonly grpc::Marshaller<$type$> $fieldname$ = " + "grpc::Marshallers.Create(__Helper_SerializeMessage, " + "context => __Helper_DeserializeMessage(context, $type$.Parser));\n", + "fieldname", GetMarshallerFieldName(message), "type", + GRPC_CUSTOM_CSHARP_GETCLASSNAME(message)); + } + out->Print("\n"); +} + +void GenerateStaticMethodField(Printer* out, const MethodDescriptor* method) { + GenerateGeneratedCodeAttribute(out); + out->Print( + "static readonly grpc::Method<$request$, $response$> $fieldname$ = new " + "grpc::Method<$request$, $response$>(\n", + "fieldname", GetMethodFieldName(method), "request", + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->input_type()), "response", + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type())); + out->Indent(); + out->Indent(); + out->Print("$methodtype$,\n", "methodtype", GetCSharpMethodType(method)); + out->Print("$servicenamefield$,\n", "servicenamefield", + GetServiceNameFieldName()); + out->Print("\"$methodname$\",\n", "methodname", method->name()); + out->Print("$requestmarshaller$,\n", "requestmarshaller", + GetMarshallerFieldName(method->input_type())); + out->Print("$responsemarshaller$);\n", "responsemarshaller", + GetMarshallerFieldName(method->output_type())); + out->Print("\n"); + out->Outdent(); + out->Outdent(); +} + +void GenerateServiceDescriptorProperty(Printer* out, + const ServiceDescriptor* service) { + std::ostringstream index; + index << service->index(); + out->Print("/// <summary>Service descriptor</summary>\n"); + out->Print( + "public static global::Google.Protobuf.Reflection.ServiceDescriptor " + "Descriptor\n"); + out->Print("{\n"); + out->Print(" get { return $umbrella$.Descriptor.Services[$index$]; }\n", + "umbrella", + GRPC_CUSTOM_CSHARP_GETREFLECTIONCLASSNAME(service->file()), + "index", TString(index.str())); + out->Print("}\n"); + out->Print("\n"); +} + +void GenerateServerClass(Printer* out, const ServiceDescriptor* service) { + out->Print( + "/// <summary>Base class for server-side implementations of " + "$servicename$</summary>\n", + "servicename", GetServiceClassName(service)); + out->Print( + "[grpc::BindServiceMethod(typeof($classname$), " + "\"BindService\")]\n", + "classname", GetServiceClassName(service)); + out->Print("public abstract partial class $name$\n", "name", + GetServerClassName(service)); + out->Print("{\n"); + out->Indent(); + for (int i = 0; i < service->method_count(); i++) { + const MethodDescriptor* method = service->method(i); + GenerateDocCommentServerMethod(out, method); + GenerateGeneratedCodeAttribute(out); + out->Print( + "public virtual $returntype$ " + "$methodname$($request$$response_stream_maybe$, " + "grpc::ServerCallContext context)\n", + "methodname", method->name(), "returntype", + GetMethodReturnTypeServer(method), "request", + GetMethodRequestParamServer(method), "response_stream_maybe", + GetMethodResponseStreamMaybe(method)); + out->Print("{\n"); + out->Indent(); + out->Print( + "throw new grpc::RpcException(" + "new grpc::Status(grpc::StatusCode.Unimplemented, \"\"));\n"); + out->Outdent(); + out->Print("}\n\n"); + } + out->Outdent(); + out->Print("}\n"); + out->Print("\n"); +} + +void GenerateClientStub(Printer* out, const ServiceDescriptor* service) { + out->Print("/// <summary>Client for $servicename$</summary>\n", "servicename", + GetServiceClassName(service)); + out->Print("public partial class $name$ : grpc::ClientBase<$name$>\n", "name", + GetClientClassName(service)); + out->Print("{\n"); + out->Indent(); + + // constructors + out->Print( + "/// <summary>Creates a new client for $servicename$</summary>\n" + "/// <param name=\"channel\">The channel to use to make remote " + "calls.</param>\n", + "servicename", GetServiceClassName(service)); + GenerateGeneratedCodeAttribute(out); + out->Print("public $name$(grpc::ChannelBase channel) : base(channel)\n", + "name", GetClientClassName(service)); + out->Print("{\n"); + out->Print("}\n"); + out->Print( + "/// <summary>Creates a new client for $servicename$ that uses a custom " + "<c>CallInvoker</c>.</summary>\n" + "/// <param name=\"callInvoker\">The callInvoker to use to make remote " + "calls.</param>\n", + "servicename", GetServiceClassName(service)); + GenerateGeneratedCodeAttribute(out); + out->Print( + "public $name$(grpc::CallInvoker callInvoker) : base(callInvoker)\n", + "name", GetClientClassName(service)); + out->Print("{\n"); + out->Print("}\n"); + out->Print( + "/// <summary>Protected parameterless constructor to allow creation" + " of test doubles.</summary>\n"); + GenerateGeneratedCodeAttribute(out); + out->Print("protected $name$() : base()\n", "name", + GetClientClassName(service)); + out->Print("{\n"); + out->Print("}\n"); + out->Print( + "/// <summary>Protected constructor to allow creation of configured " + "clients.</summary>\n" + "/// <param name=\"configuration\">The client configuration.</param>\n"); + GenerateGeneratedCodeAttribute(out); + out->Print( + "protected $name$(ClientBaseConfiguration configuration)" + " : base(configuration)\n", + "name", GetClientClassName(service)); + out->Print("{\n"); + out->Print("}\n\n"); + + for (int i = 0; i < service->method_count(); i++) { + const MethodDescriptor* method = service->method(i); + if (!method->client_streaming() && !method->server_streaming()) { + // unary calls have an extra synchronous stub method + GenerateDocCommentClientMethod(out, method, true, false); + GenerateGeneratedCodeAttribute(out); + out->Print( + "public virtual $response$ $methodname$($request$ request, " + "grpc::Metadata " + "headers = null, global::System.DateTime? deadline = null, " + "global::System.Threading.CancellationToken " + "cancellationToken = " + "default(global::System.Threading.CancellationToken))\n", + "methodname", method->name(), "request", + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->input_type()), "response", + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type())); + out->Print("{\n"); + out->Indent(); + out->Print( + "return $methodname$(request, new grpc::CallOptions(headers, " + "deadline, " + "cancellationToken));\n", + "methodname", method->name()); + out->Outdent(); + out->Print("}\n"); + + // overload taking CallOptions as a param + GenerateDocCommentClientMethod(out, method, true, true); + GenerateGeneratedCodeAttribute(out); + out->Print( + "public virtual $response$ $methodname$($request$ request, " + "grpc::CallOptions options)\n", + "methodname", method->name(), "request", + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->input_type()), "response", + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type())); + out->Print("{\n"); + out->Indent(); + out->Print( + "return CallInvoker.BlockingUnaryCall($methodfield$, null, options, " + "request);\n", + "methodfield", GetMethodFieldName(method)); + out->Outdent(); + out->Print("}\n"); + } + + TString method_name = method->name(); + if (!method->client_streaming() && !method->server_streaming()) { + method_name += "Async"; // prevent name clash with synchronous method. + } + GenerateDocCommentClientMethod(out, method, false, false); + GenerateGeneratedCodeAttribute(out); + out->Print( + "public virtual $returntype$ " + "$methodname$($request_maybe$grpc::Metadata " + "headers = null, global::System.DateTime? deadline = null, " + "global::System.Threading.CancellationToken " + "cancellationToken = " + "default(global::System.Threading.CancellationToken))\n", + "methodname", method_name, "request_maybe", + GetMethodRequestParamMaybe(method), "returntype", + GetMethodReturnTypeClient(method)); + out->Print("{\n"); + out->Indent(); + + out->Print( + "return $methodname$($request_maybe$new grpc::CallOptions(headers, " + "deadline, " + "cancellationToken));\n", + "methodname", method_name, "request_maybe", + GetMethodRequestParamMaybe(method, true)); + out->Outdent(); + out->Print("}\n"); + + // overload taking CallOptions as a param + GenerateDocCommentClientMethod(out, method, false, true); + GenerateGeneratedCodeAttribute(out); + out->Print( + "public virtual $returntype$ " + "$methodname$($request_maybe$grpc::CallOptions " + "options)\n", + "methodname", method_name, "request_maybe", + GetMethodRequestParamMaybe(method), "returntype", + GetMethodReturnTypeClient(method)); + out->Print("{\n"); + out->Indent(); + if (!method->client_streaming() && !method->server_streaming()) { + // Non-Streaming + out->Print( + "return CallInvoker.AsyncUnaryCall($methodfield$, null, options, " + "request);\n", + "methodfield", GetMethodFieldName(method)); + } else if (method->client_streaming() && !method->server_streaming()) { + // Client Streaming Only + out->Print( + "return CallInvoker.AsyncClientStreamingCall($methodfield$, null, " + "options);\n", + "methodfield", GetMethodFieldName(method)); + } else if (!method->client_streaming() && method->server_streaming()) { + // Server Streaming Only + out->Print( + "return CallInvoker.AsyncServerStreamingCall($methodfield$, null, " + "options, request);\n", + "methodfield", GetMethodFieldName(method)); + } else { + // Bi-Directional Streaming + out->Print( + "return CallInvoker.AsyncDuplexStreamingCall($methodfield$, null, " + "options);\n", + "methodfield", GetMethodFieldName(method)); + } + out->Outdent(); + out->Print("}\n"); + } + + // override NewInstance method + out->Print( + "/// <summary>Creates a new instance of client from given " + "<c>ClientBaseConfiguration</c>.</summary>\n"); + GenerateGeneratedCodeAttribute(out); + out->Print( + "protected override $name$ NewInstance(ClientBaseConfiguration " + "configuration)\n", + "name", GetClientClassName(service)); + out->Print("{\n"); + out->Indent(); + out->Print("return new $name$(configuration);\n", "name", + GetClientClassName(service)); + out->Outdent(); + out->Print("}\n"); + + out->Outdent(); + out->Print("}\n"); + out->Print("\n"); +} + +void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor* service) { + out->Print( + "/// <summary>Creates service definition that can be registered with a " + "server</summary>\n"); + out->Print( + "/// <param name=\"serviceImpl\">An object implementing the server-side" + " handling logic.</param>\n"); + GenerateGeneratedCodeAttribute(out); + out->Print( + "public static grpc::ServerServiceDefinition BindService($implclass$ " + "serviceImpl)\n", + "implclass", GetServerClassName(service)); + out->Print("{\n"); + out->Indent(); + + out->Print("return grpc::ServerServiceDefinition.CreateBuilder()"); + out->Indent(); + out->Indent(); + for (int i = 0; i < service->method_count(); i++) { + const MethodDescriptor* method = service->method(i); + out->Print("\n.AddMethod($methodfield$, serviceImpl.$methodname$)", + "methodfield", GetMethodFieldName(method), "methodname", + method->name()); + } + out->Print(".Build();\n"); + out->Outdent(); + out->Outdent(); + + out->Outdent(); + out->Print("}\n"); + out->Print("\n"); +} + +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 " + "service binding logic.\n" + "/// Note: this method is part of an experimental API that can change or " + "be " + "removed without any prior notice.</summary>\n"); + out->Print( + "/// <param name=\"serviceBinder\">Service methods will be bound by " + "calling <c>AddMethod</c> on this object." + "</param>\n"); + out->Print( + "/// <param name=\"serviceImpl\">An object implementing the server-side" + " handling logic.</param>\n"); + GenerateGeneratedCodeAttribute(out); + out->Print( + "public static void BindService(grpc::ServiceBinderBase serviceBinder, " + "$implclass$ " + "serviceImpl)\n", + "implclass", GetServerClassName(service)); + out->Print("{\n"); + out->Indent(); + + for (int i = 0; i < service->method_count(); i++) { + const MethodDescriptor* method = service->method(i); + out->Print( + "serviceBinder.AddMethod($methodfield$, serviceImpl == null ? null : " + "new $servermethodtype$<$inputtype$, $outputtype$>(" + "serviceImpl.$methodname$));\n", + "methodfield", GetMethodFieldName(method), "servermethodtype", + GetCSharpServerMethodType(method), "inputtype", + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->input_type()), "outputtype", + GRPC_CUSTOM_CSHARP_GETCLASSNAME(method->output_type()), "methodname", + method->name()); + } + + out->Outdent(); + out->Print("}\n"); + out->Print("\n"); +} + +void GenerateService(Printer* out, const ServiceDescriptor* service, + bool generate_client, bool generate_server, + bool internal_access) { + GenerateDocCommentBody(out, service); + + out->Print("$access_level$ static partial class $classname$\n", + "access_level", GetAccessLevel(internal_access), "classname", + GetServiceClassName(service)); + out->Print("{\n"); + out->Indent(); + out->Print("static readonly string $servicenamefield$ = \"$servicename$\";\n", + "servicenamefield", GetServiceNameFieldName(), "servicename", + service->full_name()); + out->Print("\n"); + + GenerateMarshallerFields(out, service); + for (int i = 0; i < service->method_count(); i++) { + GenerateStaticMethodField(out, service->method(i)); + } + GenerateServiceDescriptorProperty(out, service); + + if (generate_server) { + GenerateServerClass(out, service); + } + if (generate_client) { + GenerateClientStub(out, service); + } + if (generate_server) { + GenerateBindServiceMethod(out, service); + GenerateBindServiceWithBinderMethod(out, service); + } + + out->Outdent(); + out->Print("}\n"); +} + +} // anonymous namespace + +TString GetServices(const FileDescriptor* file, bool generate_client, + bool generate_server, bool internal_access) { + TString output; + { + // Scope the output stream so it closes and finalizes output to the string. + + StringOutputStream output_stream(&output); + Printer out(&output_stream, '$'); + + // Don't write out any output if there no services, to avoid empty service + // files being generated for proto files that don't declare any. + if (file->service_count() == 0) { + return output; + } + + // Write out a file header. + out.Print("// <auto-generated>\n"); + out.Print( + "// Generated by the protocol buffer compiler. DO NOT EDIT!\n"); + out.Print("// source: $filename$\n", "filename", file->name()); + out.Print("// </auto-generated>\n"); + + // use C++ style as there are no file-level XML comments in .NET + TString leading_comments = GetCsharpComments(file, true); + if (!leading_comments.empty()) { + out.Print("// Original file comments:\n"); + out.PrintRaw(leading_comments.c_str()); + } + + out.Print("#pragma warning disable 0414, 1591\n"); + + out.Print("#region Designer generated code\n"); + out.Print("\n"); + out.Print("using grpc = global::Grpc.Core;\n"); + out.Print("\n"); + + TString file_namespace = GRPC_CUSTOM_CSHARP_GETFILENAMESPACE(file); + if (file_namespace != "") { + out.Print("namespace $namespace$ {\n", "namespace", file_namespace); + out.Indent(); + } + for (int i = 0; i < file->service_count(); i++) { + GenerateService(&out, file->service(i), generate_client, generate_server, + internal_access); + } + if (file_namespace != "") { + out.Outdent(); + out.Print("}\n"); + } + out.Print("#endregion\n"); + } + return output; +} + +} // namespace grpc_csharp_generator diff --git a/contrib/libs/grpc/src/cpp/common/insecure_create_auth_context.cc b/contrib/libs/grpc/src/compiler/csharp_generator.h index 4e5cbd0372..323b90584d 100644 --- a/contrib/libs/grpc/src/cpp/common/insecure_create_auth_context.cc +++ b/contrib/libs/grpc/src/compiler/csharp_generator.h @@ -15,16 +15,18 @@ * limitations under the License. * */ -#include <memory> -#include <grpc/grpc.h> -#include <grpcpp/security/auth_context.h> +#ifndef GRPC_INTERNAL_COMPILER_CSHARP_GENERATOR_H +#define GRPC_INTERNAL_COMPILER_CSHARP_GENERATOR_H -namespace grpc { +#include "src/compiler/config.h" -std::shared_ptr<const AuthContext> CreateAuthContext(grpc_call* call) { - (void)call; - return std::shared_ptr<const AuthContext>(); -} +namespace grpc_csharp_generator { -} // namespace grpc +TString GetServices(const grpc::protobuf::FileDescriptor* file, + bool generate_client, bool generate_server, + bool internal_access); + +} // namespace grpc_csharp_generator + +#endif // GRPC_INTERNAL_COMPILER_CSHARP_GENERATOR_H diff --git a/contrib/libs/grpc/src/compiler/csharp_generator_helpers.h b/contrib/libs/grpc/src/compiler/csharp_generator_helpers.h new file mode 100644 index 0000000000..d1a5b3a2a0 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/csharp_generator_helpers.h @@ -0,0 +1,44 @@ +/* + * + * 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_INTERNAL_COMPILER_CSHARP_GENERATOR_HELPERS_H +#define GRPC_INTERNAL_COMPILER_CSHARP_GENERATOR_HELPERS_H + +#include "src/compiler/config.h" +#include "src/compiler/generator_helpers.h" + +namespace grpc_csharp_generator { + +inline bool ServicesFilename(const grpc::protobuf::FileDescriptor* file, + const TString& file_suffix, + TString& out_file_name_or_error) { + out_file_name_or_error = + grpc_generator::FileNameInUpperCamel(file, false) + file_suffix; + return true; +} + +// Get leading or trailing comments in a string. Comment lines start with "// ". +// Leading detached comments are put in front of leading comments. +template <typename DescriptorType> +inline TString GetCsharpComments(const DescriptorType* desc, bool leading) { + return grpc_generator::GetPrefixedComments(desc, leading, "//"); +} + +} // namespace grpc_csharp_generator + +#endif // GRPC_INTERNAL_COMPILER_CSHARP_GENERATOR_HELPERS_H diff --git a/contrib/libs/grpc/src/compiler/grpc_plugin_support/CMakeLists.txt b/contrib/libs/grpc/src/compiler/grpc_plugin_support/CMakeLists.txt index 3a5fffec24..7391a78c9d 100644 --- a/contrib/libs/grpc/src/compiler/grpc_plugin_support/CMakeLists.txt +++ b/contrib/libs/grpc/src/compiler/grpc_plugin_support/CMakeLists.txt @@ -27,5 +27,10 @@ target_link_libraries(src-compiler-grpc_plugin_support PUBLIC ) target_sources(src-compiler-grpc_plugin_support PRIVATE ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/compiler/cpp_generator.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/compiler/csharp_generator.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/compiler/node_generator.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/compiler/objective_c_generator.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/compiler/php_generator.cc ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/compiler/python_generator.cc + ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/compiler/ruby_generator.cc ) diff --git a/contrib/libs/grpc/src/compiler/node_generator.cc b/contrib/libs/grpc/src/compiler/node_generator.cc new file mode 100644 index 0000000000..d890320e8a --- /dev/null +++ b/contrib/libs/grpc/src/compiler/node_generator.cc @@ -0,0 +1,276 @@ +/* + * + * 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 "src/compiler/node_generator.h" + +#include <map> + +#include "src/compiler/config.h" +#include "src/compiler/generator_helpers.h" +#include "src/compiler/node_generator_helpers.h" + +using grpc::protobuf::Descriptor; +using grpc::protobuf::FileDescriptor; +using grpc::protobuf::MethodDescriptor; +using grpc::protobuf::ServiceDescriptor; +using grpc::protobuf::io::Printer; +using grpc::protobuf::io::StringOutputStream; +using std::map; + +namespace grpc_node_generator { +namespace { + +// Returns the alias we assign to the module of the given .proto filename +// when importing. Copied entirely from +// github:google/protobuf/src/google/protobuf/compiler/js/js_generator.cc#L154 +TString ModuleAlias(const TString filename) { + // This scheme could technically cause problems if a file includes any 2 of: + // foo/bar_baz.proto + // foo_bar_baz.proto + // foo_bar/baz.proto + // + // We'll worry about this problem if/when we actually see it. This name isn't + // exposed to users so we can change it later if we need to. + TString basename = grpc_generator::StripProto(filename); + basename = grpc_generator::StringReplace(basename, "-", "$"); + basename = grpc_generator::StringReplace(basename, "/", "_"); + basename = grpc_generator::StringReplace(basename, ".", "_"); + return basename + "_pb"; +} + +// Given a filename like foo/bar/baz.proto, returns the corresponding JavaScript +// message file foo/bar/baz.js +TString GetJSMessageFilename(const TString& filename) { + TString name = filename; + return grpc_generator::StripProto(name) + "_pb.js"; +} + +// Given a filename like foo/bar/baz.proto, returns the root directory +// path ../../ +TString GetRootPath(const TString& from_filename, + const TString& to_filename) { + if (to_filename.find("google/protobuf") == 0) { + // Well-known types (.proto files in the google/protobuf directory) are + // assumed to come from the 'google-protobuf' npm package. We may want to + // generalize this exception later by letting others put generated code in + // their own npm packages. + return "google-protobuf/"; + } + size_t slashes = std::count(from_filename.begin(), from_filename.end(), '/'); + if (slashes == 0) { + return "./"; + } + TString result = ""; + for (size_t i = 0; i < slashes; i++) { + result += "../"; + } + return result; +} + +// Return the relative path to load to_file from the directory containing +// from_file, assuming that both paths are relative to the same directory +TString GetRelativePath(const TString& from_file, + const TString& to_file) { + return GetRootPath(from_file, to_file) + to_file; +} + +/* Finds all message types used in all services in the file, and returns them + * as a map of fully qualified message type name to message descriptor */ +map<TString, const Descriptor*> GetAllMessages(const FileDescriptor* file) { + map<TString, const Descriptor*> message_types; + for (int service_num = 0; service_num < file->service_count(); + service_num++) { + const ServiceDescriptor* service = file->service(service_num); + for (int method_num = 0; method_num < service->method_count(); + method_num++) { + const MethodDescriptor* method = service->method(method_num); + const Descriptor* input_type = method->input_type(); + const Descriptor* output_type = method->output_type(); + message_types[input_type->full_name()] = input_type; + message_types[output_type->full_name()] = output_type; + } + } + return message_types; +} + +TString MessageIdentifierName(const TString& name) { + return grpc_generator::StringReplace(name, ".", "_"); +} + +TString NodeObjectPath(const Descriptor* descriptor) { + TString module_alias = ModuleAlias(descriptor->file()->name()); + TString name = descriptor->full_name(); + grpc_generator::StripPrefix(&name, descriptor->file()->package() + "."); + return module_alias + "." + name; +} + +// Prints out the message serializer and deserializer functions +void PrintMessageTransformer(const Descriptor* descriptor, Printer* out, + const Parameters& params) { + map<TString, TString> template_vars; + TString full_name = descriptor->full_name(); + template_vars["identifier_name"] = MessageIdentifierName(full_name); + template_vars["name"] = full_name; + template_vars["node_name"] = NodeObjectPath(descriptor); + // Print the serializer + out->Print(template_vars, "function serialize_$identifier_name$(arg) {\n"); + out->Indent(); + out->Print(template_vars, "if (!(arg instanceof $node_name$)) {\n"); + out->Indent(); + out->Print(template_vars, + "throw new Error('Expected argument of type $name$');\n"); + out->Outdent(); + out->Print("}\n"); + if (params.minimum_node_version > 5) { + // Node version is > 5, we should use Buffer.from + out->Print("return Buffer.from(arg.serializeBinary());\n"); + } else { + out->Print("return new Buffer(arg.serializeBinary());\n"); + } + out->Outdent(); + out->Print("}\n\n"); + + // Print the deserializer + out->Print(template_vars, + "function deserialize_$identifier_name$(buffer_arg) {\n"); + out->Indent(); + out->Print( + template_vars, + "return $node_name$.deserializeBinary(new Uint8Array(buffer_arg));\n"); + out->Outdent(); + out->Print("}\n\n"); +} + +void PrintMethod(const MethodDescriptor* method, Printer* out) { + const Descriptor* input_type = method->input_type(); + const Descriptor* output_type = method->output_type(); + map<TString, TString> vars; + vars["service_name"] = method->service()->full_name(); + vars["name"] = method->name(); + vars["input_type"] = NodeObjectPath(input_type); + vars["input_type_id"] = MessageIdentifierName(input_type->full_name()); + vars["output_type"] = NodeObjectPath(output_type); + vars["output_type_id"] = MessageIdentifierName(output_type->full_name()); + vars["client_stream"] = method->client_streaming() ? "true" : "false"; + vars["server_stream"] = method->server_streaming() ? "true" : "false"; + out->Print("{\n"); + out->Indent(); + out->Print(vars, "path: '/$service_name$/$name$',\n"); + out->Print(vars, "requestStream: $client_stream$,\n"); + out->Print(vars, "responseStream: $server_stream$,\n"); + out->Print(vars, "requestType: $input_type$,\n"); + out->Print(vars, "responseType: $output_type$,\n"); + out->Print(vars, "requestSerialize: serialize_$input_type_id$,\n"); + out->Print(vars, "requestDeserialize: deserialize_$input_type_id$,\n"); + out->Print(vars, "responseSerialize: serialize_$output_type_id$,\n"); + out->Print(vars, "responseDeserialize: deserialize_$output_type_id$,\n"); + out->Outdent(); + out->Print("}"); +} + +// Prints out the service descriptor object +void PrintService(const ServiceDescriptor* service, Printer* out) { + map<TString, TString> template_vars; + out->Print(GetNodeComments(service, true).c_str()); + template_vars["name"] = service->name(); + out->Print(template_vars, "var $name$Service = exports.$name$Service = {\n"); + out->Indent(); + for (int i = 0; i < service->method_count(); i++) { + TString method_name = + grpc_generator::LowercaseFirstLetter(service->method(i)->name()); + out->Print(GetNodeComments(service->method(i), true).c_str()); + out->Print("$method_name$: ", "method_name", method_name); + PrintMethod(service->method(i), out); + out->Print(",\n"); + out->Print(GetNodeComments(service->method(i), false).c_str()); + } + out->Outdent(); + out->Print("};\n\n"); + out->Print(template_vars, + "exports.$name$Client = " + "grpc.makeGenericClientConstructor($name$Service);\n"); + out->Print(GetNodeComments(service, false).c_str()); +} + +void PrintImports(const FileDescriptor* file, Printer* out) { + out->Print("var grpc = require('grpc');\n"); + if (file->message_type_count() > 0) { + TString file_path = + GetRelativePath(file->name(), GetJSMessageFilename(file->name())); + out->Print("var $module_alias$ = require('$file_path$');\n", "module_alias", + ModuleAlias(file->name()), "file_path", file_path); + } + + for (int i = 0; i < file->dependency_count(); i++) { + TString file_path = GetRelativePath( + file->name(), GetJSMessageFilename(file->dependency(i)->name())); + out->Print("var $module_alias$ = require('$file_path$');\n", "module_alias", + ModuleAlias(file->dependency(i)->name()), "file_path", + file_path); + } + out->Print("\n"); +} + +void PrintTransformers(const FileDescriptor* file, Printer* out, + const Parameters& params) { + map<TString, const Descriptor*> messages = GetAllMessages(file); + for (std::map<TString, const Descriptor*>::iterator it = messages.begin(); + it != messages.end(); it++) { + PrintMessageTransformer(it->second, out, params); + } + out->Print("\n"); +} + +void PrintServices(const FileDescriptor* file, Printer* out) { + for (int i = 0; i < file->service_count(); i++) { + PrintService(file->service(i), out); + } +} +} // namespace + +TString GenerateFile(const FileDescriptor* file, const Parameters& params) { + TString output; + { + StringOutputStream output_stream(&output); + Printer out(&output_stream, '$'); + + if (file->service_count() == 0) { + return output; + } + out.Print("// GENERATED CODE -- DO NOT EDIT!\n\n"); + + TString leading_comments = GetNodeComments(file, true); + if (!leading_comments.empty()) { + out.Print("// Original file comments:\n"); + out.PrintRaw(leading_comments.c_str()); + } + + out.Print("'use strict';\n"); + + PrintImports(file, &out); + + PrintTransformers(file, &out, params); + + PrintServices(file, &out); + + out.Print(GetNodeComments(file, false).c_str()); + } + return output; +} + +} // namespace grpc_node_generator diff --git a/contrib/libs/grpc/src/compiler/node_generator.h b/contrib/libs/grpc/src/compiler/node_generator.h new file mode 100644 index 0000000000..959df436ea --- /dev/null +++ b/contrib/libs/grpc/src/compiler/node_generator.h @@ -0,0 +1,37 @@ +/* + * + * 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_INTERNAL_COMPILER_NODE_GENERATOR_H +#define GRPC_INTERNAL_COMPILER_NODE_GENERATOR_H + +#include "src/compiler/config.h" + +namespace grpc_node_generator { + +// Contains all the parameters that are parsed from the command line. +struct Parameters { + // Sets the earliest version of nodejs that needs to be supported. + int minimum_node_version; +}; + +TString GenerateFile(const grpc::protobuf::FileDescriptor* file, + const Parameters& params); + +} // namespace grpc_node_generator + +#endif // GRPC_INTERNAL_COMPILER_NODE_GENERATOR_H diff --git a/contrib/libs/grpc/src/compiler/node_generator_helpers.h b/contrib/libs/grpc/src/compiler/node_generator_helpers.h new file mode 100644 index 0000000000..ccf57ec8a6 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/node_generator_helpers.h @@ -0,0 +1,42 @@ +/* + * + * 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_INTERNAL_COMPILER_NODE_GENERATOR_HELPERS_H +#define GRPC_INTERNAL_COMPILER_NODE_GENERATOR_HELPERS_H + +#include <algorithm> + +#include "src/compiler/config.h" +#include "src/compiler/generator_helpers.h" + +namespace grpc_node_generator { + +inline TString GetJSServiceFilename(const TString& filename) { + return grpc_generator::StripProto(filename) + "_grpc_pb.js"; +} + +// Get leading or trailing comments in a string. Comment lines start with "// ". +// Leading detached comments are put in front of leading comments. +template <typename DescriptorType> +inline TString GetNodeComments(const DescriptorType* desc, bool leading) { + return grpc_generator::GetPrefixedComments(desc, leading, "//"); +} + +} // namespace grpc_node_generator + +#endif // GRPC_INTERNAL_COMPILER_NODE_GENERATOR_HELPERS_H diff --git a/contrib/libs/grpc/src/compiler/objective_c_generator.cc b/contrib/libs/grpc/src/compiler/objective_c_generator.cc new file mode 100644 index 0000000000..ec7b90f8a7 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/objective_c_generator.cc @@ -0,0 +1,451 @@ +/* + * + * 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 "src/compiler/objective_c_generator.h" + +#include <map> +#include <set> +#include <sstream> + +#include <google/protobuf/compiler/objectivec/objectivec_helpers.h> + +#include "src/compiler/config.h" +#include "src/compiler/objective_c_generator_helpers.h" + +using ::google::protobuf::compiler::objectivec::ClassName; +using ::grpc::protobuf::FileDescriptor; +using ::grpc::protobuf::MethodDescriptor; +using ::grpc::protobuf::ServiceDescriptor; +using ::grpc::protobuf::io::Printer; +using ::std::map; +using ::std::set; + +namespace grpc_objective_c_generator { +namespace { + +void PrintProtoRpcDeclarationAsPragma(Printer* printer, + const MethodDescriptor* method, + map< ::TString, ::TString> vars) { + vars["client_stream"] = method->client_streaming() ? "stream " : ""; + vars["server_stream"] = method->server_streaming() ? "stream " : ""; + + printer->Print(vars, + "#pragma mark $method_name$($client_stream$$request_type$)" + " returns ($server_stream$$response_type$)\n\n"); +} + +template <typename DescriptorType> +static void PrintAllComments(const DescriptorType* desc, Printer* printer, + bool deprecated = false) { + std::vector<TString> comments; + grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING_DETACHED, + &comments); + grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING, + &comments); + grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_TRAILING, + &comments); + if (comments.empty()) { + return; + } + printer->Print("/**\n"); + for (auto it = comments.begin(); it != comments.end(); ++it) { + printer->Print(" * "); + size_t start_pos = it->find_first_not_of(' '); + if (start_pos != TString::npos) { + printer->PrintRaw(it->c_str() + start_pos); + } + printer->Print("\n"); + } + if (deprecated) { + printer->Print(" *\n"); + printer->Print( + " * This method belongs to a set of APIs that have been deprecated. " + "Using" + " the v2 API is recommended.\n"); + } + printer->Print(" */\n"); +} + +void PrintMethodSignature(Printer* printer, const MethodDescriptor* method, + const map< ::TString, ::TString>& vars) { + // Print comment + PrintAllComments(method, printer, true); + + printer->Print(vars, "- ($return_type$)$method_name$With"); + if (method->client_streaming()) { + printer->Print("RequestsWriter:(GRXWriter *)requestWriter"); + } else { + printer->Print(vars, "Request:($request_class$ *)request"); + } + + // TODO(jcanizales): Put this on a new line and align colons. + if (method->server_streaming()) { + printer->Print(vars, + " eventHandler:(void(^)(BOOL done, " + "$response_class$ *_Nullable response, NSError *_Nullable " + "error))eventHandler"); + } else { + printer->Print(vars, + " handler:(void(^)($response_class$ *_Nullable response, " + "NSError *_Nullable error))handler"); + } +} + +void PrintSimpleSignature(Printer* printer, const MethodDescriptor* method, + map< ::TString, ::TString> vars) { + vars["method_name"] = + grpc_generator::LowercaseFirstLetter(vars["method_name"]); + vars["return_type"] = "void"; + PrintMethodSignature(printer, method, vars); +} + +void PrintAdvancedSignature(Printer* printer, const MethodDescriptor* method, + map< ::TString, ::TString> vars) { + vars["method_name"] = "RPCTo" + vars["method_name"]; + vars["return_type"] = "GRPCProtoCall *"; + PrintMethodSignature(printer, method, vars); +} + +void PrintV2Signature(Printer* printer, const MethodDescriptor* method, + map< ::TString, ::TString> vars) { + if (method->client_streaming()) { + vars["return_type"] = "GRPCStreamingProtoCall *"; + } else { + vars["return_type"] = "GRPCUnaryProtoCall *"; + } + vars["method_name"] = + grpc_generator::LowercaseFirstLetter(vars["method_name"]); + + PrintAllComments(method, printer); + + printer->Print(vars, "- ($return_type$)$method_name$With"); + if (method->client_streaming()) { + printer->Print("ResponseHandler:(id<GRPCProtoResponseHandler>)handler"); + } else { + printer->Print(vars, + "Message:($request_class$ *)message " + "responseHandler:(id<GRPCProtoResponseHandler>)handler"); + } + printer->Print(" callOptions:(GRPCCallOptions *_Nullable)callOptions"); +} + +inline map< ::TString, ::TString> GetMethodVars( + const MethodDescriptor* method) { + map< ::TString, ::TString> res; + res["method_name"] = method->name(); + res["request_type"] = method->input_type()->name(); + res["response_type"] = method->output_type()->name(); + res["request_class"] = ClassName(method->input_type()); + res["response_class"] = ClassName(method->output_type()); + return res; +} + +void PrintMethodDeclarations(Printer* printer, const MethodDescriptor* method) { + map< ::TString, ::TString> vars = GetMethodVars(method); + + PrintProtoRpcDeclarationAsPragma(printer, method, vars); + + PrintSimpleSignature(printer, method, vars); + printer->Print(";\n\n"); + PrintAdvancedSignature(printer, method, vars); + printer->Print(";\n\n\n"); +} + +void PrintV2MethodDeclarations(Printer* printer, + const MethodDescriptor* method) { + map< ::TString, ::TString> vars = GetMethodVars(method); + + PrintProtoRpcDeclarationAsPragma(printer, method, vars); + + PrintV2Signature(printer, method, vars); + printer->Print(";\n\n"); +} + +void PrintSimpleImplementation(Printer* printer, const MethodDescriptor* method, + map< ::TString, ::TString> vars) { + printer->Print("{\n"); + printer->Print(vars, " [[self RPCTo$method_name$With"); + if (method->client_streaming()) { + printer->Print("RequestsWriter:requestWriter"); + } else { + printer->Print("Request:request"); + } + if (method->server_streaming()) { + printer->Print(" eventHandler:eventHandler] start];\n"); + } else { + printer->Print(" handler:handler] start];\n"); + } + printer->Print("}\n"); +} + +void PrintAdvancedImplementation(Printer* printer, + const MethodDescriptor* method, + map< ::TString, ::TString> vars) { + printer->Print("{\n"); + printer->Print(vars, " return [self RPCToMethod:@\"$method_name$\"\n"); + + printer->Print(" requestsWriter:"); + if (method->client_streaming()) { + printer->Print("requestWriter\n"); + } else { + printer->Print("[GRXWriter writerWithValue:request]\n"); + } + + printer->Print(vars, " responseClass:[$response_class$ class]\n"); + + printer->Print(" responsesWriteable:[GRXWriteable "); + if (method->server_streaming()) { + printer->Print("writeableWithEventHandler:eventHandler]];\n"); + } else { + printer->Print("writeableWithSingleHandler:handler]];\n"); + } + + printer->Print("}\n"); +} + +void PrintV2Implementation(Printer* printer, const MethodDescriptor* method, + map< ::TString, ::TString> vars) { + printer->Print(" {\n"); + if (method->client_streaming()) { + printer->Print(vars, " return [self RPCToMethod:@\"$method_name$\"\n"); + printer->Print(" responseHandler:handler\n"); + printer->Print(" callOptions:callOptions\n"); + printer->Print( + vars, " responseClass:[$response_class$ class]];\n}\n\n"); + } else { + printer->Print(vars, " return [self RPCToMethod:@\"$method_name$\"\n"); + printer->Print(" message:message\n"); + printer->Print(" responseHandler:handler\n"); + printer->Print(" callOptions:callOptions\n"); + printer->Print( + vars, " responseClass:[$response_class$ class]];\n}\n\n"); + } +} + +void PrintMethodImplementations(Printer* printer, + const MethodDescriptor* method, + const Parameters& generator_params) { + map< ::TString, ::TString> vars = GetMethodVars(method); + + PrintProtoRpcDeclarationAsPragma(printer, method, vars); + + if (!generator_params.no_v1_compatibility) { + // TODO(jcanizales): Print documentation from the method. + PrintSimpleSignature(printer, method, vars); + PrintSimpleImplementation(printer, method, vars); + + printer->Print("// Returns a not-yet-started RPC object.\n"); + PrintAdvancedSignature(printer, method, vars); + PrintAdvancedImplementation(printer, method, vars); + } + + PrintV2Signature(printer, method, vars); + PrintV2Implementation(printer, method, vars); +} + +} // namespace + +::TString GetAllMessageClasses(const FileDescriptor* file) { + ::TString output; + set< ::TString> classes; + for (int i = 0; i < file->service_count(); i++) { + 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())); + } + } + for (auto one_class : classes) { + output += "@class " + one_class + ";\n"; + } + + return output; +} + +::TString GetProtocol(const ServiceDescriptor* service, + const Parameters& generator_params) { + ::TString output; + + if (generator_params.no_v1_compatibility) return output; + + // Scope the output stream so it closes and finalizes output to the string. + grpc::protobuf::io::StringOutputStream output_stream(&output); + Printer printer(&output_stream, '$'); + + map< ::TString, ::TString> vars = { + {"service_class", ServiceClassName(service)}}; + + printer.Print(vars, + "/**\n" + " * The methods in this protocol belong to a set of old APIs " + "that have been deprecated. They do not\n" + " * recognize call options provided in the initializer. Using " + "the v2 protocol is recommended.\n" + " */\n"); + printer.Print(vars, "@protocol $service_class$ <NSObject>\n\n"); + for (int i = 0; i < service->method_count(); i++) { + PrintMethodDeclarations(&printer, service->method(i)); + } + printer.Print("@end\n\n"); + + return output; +} + +::TString GetV2Protocol(const ServiceDescriptor* service) { + ::TString output; + + // Scope the output stream so it closes and finalizes output to the string. + grpc::protobuf::io::StringOutputStream output_stream(&output); + Printer printer(&output_stream, '$'); + + map< ::TString, ::TString> vars = { + {"service_class", ServiceClassName(service) + "2"}}; + + printer.Print(vars, "@protocol $service_class$ <NSObject>\n\n"); + for (int i = 0; i < service->method_count(); i++) { + PrintV2MethodDeclarations(&printer, service->method(i)); + } + printer.Print("@end\n\n"); + + return output; +} + +::TString GetInterface(const ServiceDescriptor* service, + const Parameters& generator_params) { + ::TString output; + + // Scope the output stream so it closes and finalizes output to the string. + grpc::protobuf::io::StringOutputStream output_stream(&output); + Printer printer(&output_stream, '$'); + + map< ::TString, ::TString> vars = { + {"service_class", ServiceClassName(service)}}; + + printer.Print(vars, + "/**\n" + " * Basic service implementation, over gRPC, that only does\n" + " * marshalling and parsing.\n" + " */\n"); + printer.Print(vars, + "@interface $service_class$ :" + " GRPCProtoService<$service_class$2"); + if (!generator_params.no_v1_compatibility) { + printer.Print(vars, ", $service_class$"); + } + printer.Print(">\n"); + printer.Print( + "- (instancetype)initWithHost:(NSString *)host " + "callOptions:(GRPCCallOptions " + "*_Nullable)callOptions" + " NS_DESIGNATED_INITIALIZER;\n"); + printer.Print( + "+ (instancetype)serviceWithHost:(NSString *)host " + "callOptions:(GRPCCallOptions *_Nullable)callOptions;\n"); + if (!generator_params.no_v1_compatibility) { + printer.Print( + "// The following methods belong to a set of old APIs that have been " + "deprecated.\n"); + printer.Print("- (instancetype)initWithHost:(NSString *)host;\n"); + printer.Print("+ (instancetype)serviceWithHost:(NSString *)host;\n"); + } + printer.Print("@end\n"); + + return output; +} + +::TString GetSource(const ServiceDescriptor* service, + const Parameters& generator_params) { + ::TString output; + { + // Scope the output stream so it closes and finalizes output to the string. + grpc::protobuf::io::StringOutputStream output_stream(&output); + Printer printer(&output_stream, '$'); + + map< ::TString, ::TString> vars = { + {"service_name", service->name()}, + {"service_class", ServiceClassName(service)}, + {"package", service->file()->package()}}; + + printer.Print(vars, + "@implementation $service_class$\n\n" + "#pragma clang diagnostic push\n" + "#pragma clang diagnostic ignored " + "\"-Wobjc-designated-initializers\"\n\n" + "// Designated initializer\n" + "- (instancetype)initWithHost:(NSString *)host " + "callOptions:(GRPCCallOptions *_Nullable)callOptions {\n" + " return [super initWithHost:host\n" + " packageName:@\"$package$\"\n" + " serviceName:@\"$service_name$\"\n" + " callOptions:callOptions];\n" + "}\n\n"); + if (!generator_params.no_v1_compatibility) { + printer.Print(vars, + "- (instancetype)initWithHost:(NSString *)host {\n" + " return [super initWithHost:host\n" + " packageName:@\"$package$\"\n" + " serviceName:@\"$service_name$\"];\n" + "}\n\n"); + } + printer.Print("#pragma clang diagnostic pop\n\n"); + + if (!generator_params.no_v1_compatibility) { + printer.Print( + "// Override superclass initializer to disallow different" + " package and service names.\n" + "- (instancetype)initWithHost:(NSString *)host\n" + " packageName:(NSString *)packageName\n" + " serviceName:(NSString *)serviceName {\n" + " return [self initWithHost:host];\n" + "}\n\n"); + } + printer.Print( + "- (instancetype)initWithHost:(NSString *)host\n" + " packageName:(NSString *)packageName\n" + " serviceName:(NSString *)serviceName\n" + " callOptions:(GRPCCallOptions *)callOptions {\n" + " return [self initWithHost:host callOptions:callOptions];\n" + "}\n\n"); + + printer.Print("#pragma mark - Class Methods\n\n"); + if (!generator_params.no_v1_compatibility) { + printer.Print( + "+ (instancetype)serviceWithHost:(NSString *)host {\n" + " return [[self alloc] initWithHost:host];\n" + "}\n\n"); + } + printer.Print( + "+ (instancetype)serviceWithHost:(NSString *)host " + "callOptions:(GRPCCallOptions *_Nullable)callOptions {\n" + " return [[self alloc] initWithHost:host callOptions:callOptions];\n" + "}\n\n"); + + printer.Print("#pragma mark - Method Implementations\n\n"); + + for (int i = 0; i < service->method_count(); i++) { + PrintMethodImplementations(&printer, service->method(i), + generator_params); + } + + printer.Print("@end\n"); + } + return output; +} + +} // namespace grpc_objective_c_generator diff --git a/contrib/libs/grpc/src/compiler/objective_c_generator.h b/contrib/libs/grpc/src/compiler/objective_c_generator.h new file mode 100644 index 0000000000..4068969a37 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/objective_c_generator.h @@ -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. + * + */ + +#ifndef GRPC_INTERNAL_COMPILER_OBJECTIVE_C_GENERATOR_H +#define GRPC_INTERNAL_COMPILER_OBJECTIVE_C_GENERATOR_H + +#include "src/compiler/config.h" + +namespace grpc_objective_c_generator { + +struct Parameters { + // Do not generate V1 interface and implementation + bool no_v1_compatibility; +}; + +using ::grpc::protobuf::FileDescriptor; +using ::grpc::protobuf::ServiceDescriptor; +using ::TString; + +// Returns forward declaration of classes in the generated header file. +TString GetAllMessageClasses(const FileDescriptor* file); + +// Returns the content to be included defining the @protocol segment at the +// insertion point of the generated implementation file. This interface is +// legacy and for backwards compatibility. +TString GetProtocol(const ServiceDescriptor* service, + const Parameters& generator_params); + +// Returns the content to be included defining the @protocol segment at the +// insertion point of the generated implementation file. +TString GetV2Protocol(const ServiceDescriptor* service); + +// Returns the content to be included defining the @interface segment at the +// insertion point of the generated implementation file. +TString GetInterface(const ServiceDescriptor* service, + const Parameters& generator_params); + +// Returns the content to be included in the "global_scope" insertion point of +// the generated implementation file. +TString GetSource(const ServiceDescriptor* service, + const Parameters& generator_params); + +} // namespace grpc_objective_c_generator + +#endif // GRPC_INTERNAL_COMPILER_OBJECTIVE_C_GENERATOR_H diff --git a/contrib/libs/grpc/src/compiler/objective_c_generator_helpers.h b/contrib/libs/grpc/src/compiler/objective_c_generator_helpers.h new file mode 100644 index 0000000000..cc8aa8d124 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/objective_c_generator_helpers.h @@ -0,0 +1,95 @@ +/* + * + * 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_INTERNAL_COMPILER_OBJECTIVE_C_GENERATOR_HELPERS_H +#define GRPC_INTERNAL_COMPILER_OBJECTIVE_C_GENERATOR_HELPERS_H + +#include <map> + +#include <google/protobuf/compiler/objectivec/objectivec_helpers.h> + +#include "src/compiler/config.h" +#include "src/compiler/generator_helpers.h" + +namespace grpc_objective_c_generator { + +using ::grpc::protobuf::FileDescriptor; +using ::grpc::protobuf::ServiceDescriptor; +using ::TString; + +inline TString MessageHeaderName(const FileDescriptor* file) { + return google::protobuf::compiler::objectivec::FilePath(file) + ".pbobjc.h"; +} + +inline TString ServiceClassName(const ServiceDescriptor* service) { + const FileDescriptor* file = service->file(); + TString prefix = google::protobuf::compiler::objectivec::FileClassPrefix(file); + return prefix + service->name(); +} + +inline ::TString LocalImport(const ::TString& import) { + return ::TString("#import \"" + import + "\"\n"); +} + +inline ::TString FrameworkImport(const ::TString& import, + const ::TString& framework) { + // Flattens the directory structure: grab the file name only + std::size_t pos = import.rfind("/"); + // If pos is npos, pos + 1 is 0, which gives us the entire string, + // so there's no need to check that + ::TString filename = import.substr(pos + 1, import.size() - (pos + 1)); + return ::TString("#import <" + framework + "/" + filename + ">\n"); +} + +inline ::TString SystemImport(const ::TString& import) { + return ::TString("#import <" + import + ">\n"); +} + +inline ::TString PreprocConditional(::TString symbol, bool invert) { + return invert ? "!defined(" + symbol + ") || !" + symbol + : "defined(" + symbol + ") && " + symbol; +} + +inline ::TString PreprocIf(const ::TString& symbol, + const ::TString& if_true) { + return ::TString("#if " + PreprocConditional(symbol, false) + "\n" + + if_true + "#endif\n"); +} + +inline ::TString PreprocIfNot(const ::TString& symbol, + const ::TString& if_true) { + return ::TString("#if " + PreprocConditional(symbol, true) + "\n" + + if_true + "#endif\n"); +} + +inline ::TString PreprocIfElse(const ::TString& symbol, + const ::TString& if_true, + const ::TString& if_false) { + return ::TString("#if " + PreprocConditional(symbol, false) + "\n" + + if_true + "#else\n" + if_false + "#endif\n"); +} + +inline ::TString PreprocIfNotElse(const ::TString& symbol, + const ::TString& if_true, + const ::TString& if_false) { + return ::TString("#if " + PreprocConditional(symbol, true) + "\n" + + if_true + "#else\n" + if_false + "#endif\n"); +} + +} // namespace grpc_objective_c_generator +#endif // GRPC_INTERNAL_COMPILER_OBJECTIVE_C_GENERATOR_HELPERS_H diff --git a/contrib/libs/grpc/src/compiler/php_generator.cc b/contrib/libs/grpc/src/compiler/php_generator.cc new file mode 100644 index 0000000000..a0c1ef9be1 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/php_generator.cc @@ -0,0 +1,340 @@ +/* + * + * 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 <map> + +#include <google/protobuf/compiler/php/php_generator.h> + +#include "src/compiler/config.h" +#include "src/compiler/generator_helpers.h" +#include "src/compiler/php_generator_helpers.h" + +using google::protobuf::compiler::php::GeneratedClassName; +using grpc::protobuf::Descriptor; +using grpc::protobuf::FileDescriptor; +using grpc::protobuf::MethodDescriptor; +using grpc::protobuf::ServiceDescriptor; +using grpc::protobuf::io::Printer; +using grpc::protobuf::io::StringOutputStream; +using std::map; + +namespace grpc_php_generator { +namespace { + +TString ConvertToPhpNamespace(const TString& name) { + std::vector<TString> tokens = grpc_generator::tokenize(name, "."); + std::ostringstream oss; + for (unsigned int i = 0; i < tokens.size(); i++) { + oss << (i == 0 ? "" : "\\") + << grpc_generator::CapitalizeFirstLetter(tokens[i]); + } + return oss.str(); +} + +TString PackageName(const FileDescriptor* file) { + if (file->options().has_php_namespace()) { + return file->options().php_namespace(); + } else { + return ConvertToPhpNamespace(file->package()); + } +} + +TString MessageIdentifierName(const TString& name, + const FileDescriptor* file) { + std::vector<TString> tokens = grpc_generator::tokenize(name, "."); + std::ostringstream oss; + if (PackageName(file) != "") { + oss << PackageName(file) << "\\"; + } + oss << grpc_generator::CapitalizeFirstLetter(tokens[tokens.size() - 1]); + return oss.str(); +} + +void PrintMethod(const MethodDescriptor* method, Printer* out) { + const Descriptor* input_type = method->input_type(); + const Descriptor* output_type = method->output_type(); + map<TString, TString> vars; + vars["service_name"] = method->service()->full_name(); + vars["name"] = method->name(); + vars["input_type_id"] = + MessageIdentifierName(GeneratedClassName(input_type), input_type->file()); + vars["output_type_id"] = MessageIdentifierName( + GeneratedClassName(output_type), output_type->file()); + + out->Print("/**\n"); + out->Print(GetPHPComments(method, " *").c_str()); + if (method->client_streaming()) { + if (method->server_streaming()) { + vars["return_type_id"] = "\\Grpc\\BidiStreamingCall"; + } else { + vars["return_type_id"] = "\\Grpc\\ClientStreamingCall"; + } + out->Print(vars, + " * @param array $$metadata metadata\n" + " * @param array $$options call options\n" + " * @return $return_type_id$\n */\n" + "public function $name$($$metadata = [], " + "$$options = []) {\n"); + out->Indent(); + out->Indent(); + if (method->server_streaming()) { + out->Print("return $$this->_bidiRequest("); + } else { + out->Print("return $$this->_clientStreamRequest("); + } + out->Print(vars, + "'/$service_name$/$name$',\n" + "['\\$output_type_id$','decode'],\n" + "$$metadata, $$options);\n"); + } else { + if (method->server_streaming()) { + vars["return_type_id"] = "\\Grpc\\ServerStreamingCall"; + } else { + vars["return_type_id"] = "\\Grpc\\UnaryCall"; + } + out->Print(vars, + " * @param \\$input_type_id$ $$argument input argument\n" + " * @param array $$metadata metadata\n" + " * @param array $$options call options\n" + " * @return $return_type_id$\n */\n" + "public function $name$(\\$input_type_id$ $$argument,\n" + " $$metadata = [], $$options = []) {\n"); + out->Indent(); + out->Indent(); + if (method->server_streaming()) { + out->Print("return $$this->_serverStreamRequest("); + } else { + out->Print("return $$this->_simpleRequest("); + } + out->Print(vars, + "'/$service_name$/$name$',\n" + "$$argument,\n" + "['\\$output_type_id$', 'decode'],\n" + "$$metadata, $$options);\n"); + } + out->Outdent(); + out->Outdent(); + out->Print("}\n\n"); +} + +void PrintServerMethod(const MethodDescriptor* method, Printer* out) { + map<TString, TString> vars; + const Descriptor* input_type = method->input_type(); + const Descriptor* output_type = method->output_type(); + vars["service_name"] = method->service()->full_name(); + vars["method_name"] = method->name(); + vars["input_type_id"] = + MessageIdentifierName(GeneratedClassName(input_type), input_type->file()); + vars["output_type_id"] = MessageIdentifierName( + GeneratedClassName(output_type), output_type->file()); + + out->Print("/**\n"); + out->Print(GetPHPComments(method, " *").c_str()); + + const char* method_template; + if (method->client_streaming() && method->server_streaming()) { + method_template = + " * @param \\Grpc\\ServerCallReader $$reader read client request data " + "of \\$input_type_id$\n" + " * @param \\Grpc\\ServerCallWriter $$writer write response data of " + "\\$output_type_id$\n" + " * @param \\Grpc\\ServerContext $$context server request context\n" + " * @return void\n" + " */\n" + "public function $method_name$(\n" + " \\Grpc\\ServerCallReader $$reader,\n" + " \\Grpc\\ServerCallWriter $$writer,\n" + " \\Grpc\\ServerContext $$context\n" + "): void {\n" + " $$context->setStatus(\\Grpc\\Status::unimplemented());\n" + " $$writer->finish();\n" + "}\n\n"; + } else if (method->client_streaming()) { + method_template = + " * @param \\Grpc\\ServerCallReader $$reader read client request data " + "of \\$input_type_id$\n" + " * @param \\Grpc\\ServerContext $$context server request context\n" + " * @return \\$output_type_id$ for response data, null if if error " + "occured\n" + " * initial metadata (if any) and status (if not ok) should be set " + "to $$context\n" + " */\n" + "public function $method_name$(\n" + " \\Grpc\\ServerCallReader $$reader,\n" + " \\Grpc\\ServerContext $$context\n" + "): ?\\$output_type_id$ {\n" + " $$context->setStatus(\\Grpc\\Status::unimplemented());\n" + " return null;\n" + "}\n\n"; + } else if (method->server_streaming()) { + method_template = + " * @param \\$input_type_id$ $$request client request\n" + " * @param \\Grpc\\ServerCallWriter $$writer write response data of " + "\\$output_type_id$\n" + " * @param \\Grpc\\ServerContext $$context server request context\n" + " * @return void\n" + " */\n" + "public function $method_name$(\n" + " \\$input_type_id$ $$request,\n" + " \\Grpc\\ServerCallWriter $$writer,\n" + " \\Grpc\\ServerContext $$context\n" + "): void {\n" + " $$context->setStatus(\\Grpc\\Status::unimplemented());\n" + " $$writer->finish();\n" + "}\n\n"; + } else { + method_template = + " * @param \\$input_type_id$ $$request client request\n" + " * @param \\Grpc\\ServerContext $$context server request context\n" + " * @return \\$output_type_id$ for response data, null if if error " + "occured\n" + " * initial metadata (if any) and status (if not ok) should be set " + "to $$context\n" + " */\n" + "public function $method_name$(\n" + " \\$input_type_id$ $$request,\n" + " \\Grpc\\ServerContext $$context\n" + "): ?\\$output_type_id$ {\n" + " $$context->setStatus(\\Grpc\\Status::unimplemented());\n" + " return null;\n" + "}\n\n"; + } + out->Print(vars, method_template); +} + +void PrintServerMethodDescriptors(const ServiceDescriptor* service, + Printer* out) { + map<TString, TString> vars; + vars["service_name"] = service->full_name(); + + out->Print( + "/**\n" + " * Get the method descriptors of the service for server registration\n" + " *\n" + " * @return array of \\Grpc\\MethodDescriptor for the service methods\n" + " */\n" + "public final function getMethodDescriptors(): array\n{\n"); + out->Indent(); + out->Indent(); + out->Print("return [\n"); + out->Indent(); + out->Indent(); + for (int i = 0; i < service->method_count(); i++) { + auto method = service->method(i); + auto input_type = method->input_type(); + vars["method_name"] = method->name(); + vars["input_type_id"] = MessageIdentifierName( + GeneratedClassName(input_type), input_type->file()); + if (method->client_streaming() && method->server_streaming()) { + vars["call_type"] = "BIDI_STREAMING_CALL"; + } else if (method->client_streaming()) { + vars["call_type"] = "CLIENT_STREAMING_CALL"; + } else if (method->server_streaming()) { + vars["call_type"] = "SERVER_STREAMING_CALL"; + } else { + vars["call_type"] = "UNARY_CALL"; + } + out->Print( + vars, + "'/$service_name$/$method_name$' => new \\Grpc\\MethodDescriptor(\n" + " $$this,\n" + " '$method_name$',\n" + " '\\$input_type_id$',\n" + " \\Grpc\\MethodDescriptor::$call_type$\n" + "),\n"); + } + out->Outdent(); + out->Outdent(); + out->Print("];\n"); + out->Outdent(); + out->Outdent(); + out->Print("}\n\n"); +} + +// Prints out the service descriptor object +void PrintService(const ServiceDescriptor* service, + const TString& class_suffix, bool is_server, + Printer* out) { + map<TString, TString> vars; + out->Print("/**\n"); + out->Print(GetPHPComments(service, " *").c_str()); + out->Print(" */\n"); + vars["name"] = GetPHPServiceClassname(service, class_suffix, is_server); + vars["extends"] = is_server ? "" : "extends \\Grpc\\BaseStub "; + out->Print(vars, "class $name$ $extends${\n\n"); + out->Indent(); + out->Indent(); + if (!is_server) { + out->Print( + "/**\n * @param string $$hostname hostname\n" + " * @param array $$opts channel options\n" + " * @param \\Grpc\\Channel $$channel (optional) re-use channel object\n" + " */\n" + "public function __construct($$hostname, $$opts, " + "$$channel = null) {\n"); + out->Indent(); + out->Indent(); + out->Print("parent::__construct($$hostname, $$opts, $$channel);\n"); + out->Outdent(); + out->Outdent(); + out->Print("}\n\n"); + } + for (int i = 0; i < service->method_count(); i++) { + if (is_server) { + PrintServerMethod(service->method(i), out); + } else { + PrintMethod(service->method(i), out); + } + } + if (is_server) { + PrintServerMethodDescriptors(service, out); + } + out->Outdent(); + out->Outdent(); + out->Print("}\n"); +} +} // namespace + +TString GenerateFile(const FileDescriptor* file, + const ServiceDescriptor* service, + const TString& class_suffix, bool is_server) { + TString output; + { + StringOutputStream output_stream(&output); + Printer out(&output_stream, '$'); + + out.Print("<?php\n"); + out.Print("// GENERATED CODE -- DO NOT EDIT!\n\n"); + + TString leading_comments = GetPHPComments(file, "//"); + if (!leading_comments.empty()) { + out.Print("// Original file comments:\n"); + out.PrintRaw(leading_comments.c_str()); + } + + map<TString, TString> vars; + TString php_namespace = PackageName(file); + vars["package"] = php_namespace; + out.Print(vars, "namespace $package$;\n\n"); + + PrintService(service, class_suffix, is_server, &out); + } + return output; +} + +} // namespace grpc_php_generator diff --git a/contrib/libs/grpc/src/compiler/php_generator_helpers.h b/contrib/libs/grpc/src/compiler/php_generator_helpers.h new file mode 100644 index 0000000000..93479e20a2 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/php_generator_helpers.h @@ -0,0 +1,78 @@ +/* + * + * 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_INTERNAL_COMPILER_PHP_GENERATOR_HELPERS_H +#define GRPC_INTERNAL_COMPILER_PHP_GENERATOR_HELPERS_H + +#include <algorithm> + +#include "src/compiler/config.h" +#include "src/compiler/generator_helpers.h" + +namespace grpc_php_generator { + +inline TString GetPHPServiceClassname( + const grpc::protobuf::ServiceDescriptor* service, + const TString& class_suffix, bool is_server) { + return service->name() + + (class_suffix == "" ? (is_server ? "" : "Client") : class_suffix) + + (is_server ? "Stub" : ""); +} + +// ReplaceAll replaces all instances of search with replace in s. +inline TString ReplaceAll(TString s, const TString& search, + const TString& replace) { + size_t pos = 0; + while ((pos = s.find(search, pos)) != TString::npos) { + s.replace(pos, search.length(), replace); + pos += replace.length(); + } + return s; +} + +inline TString GetPHPServiceFilename( + const grpc::protobuf::FileDescriptor* file, + const grpc::protobuf::ServiceDescriptor* service, + const TString& class_suffix, bool is_server) { + std::ostringstream oss; + if (file->options().has_php_namespace()) { + oss << ReplaceAll(file->options().php_namespace(), "\\", "/"); + } else { + std::vector<TString> tokens = + grpc_generator::tokenize(file->package(), "."); + for (unsigned int i = 0; i < tokens.size(); i++) { + oss << (i == 0 ? "" : "/") + << grpc_generator::CapitalizeFirstLetter(tokens[i]); + } + } + return oss.str() + "/" + + GetPHPServiceClassname(service, class_suffix, is_server) + ".php"; +} + +// Get leading or trailing comments in a string. Comment lines start with "// ". +// Leading detached comments are put in front of leading comments. +template <typename DescriptorType> +inline TString GetPHPComments(const DescriptorType* desc, + TString prefix) { + return ReplaceAll(grpc_generator::GetPrefixedComments(desc, true, prefix), + "*/", "*/"); +} + +} // namespace grpc_php_generator + +#endif // GRPC_INTERNAL_COMPILER_PHP_GENERATOR_HELPERS_H diff --git a/contrib/libs/grpc/src/compiler/ruby_generator.cc b/contrib/libs/grpc/src/compiler/ruby_generator.cc new file mode 100644 index 0000000000..f5b9e9db87 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/ruby_generator.cc @@ -0,0 +1,215 @@ +/* + * + * 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 "src/compiler/ruby_generator.h" + +#include <cctype> +#include <map> +#include <vector> + +#include "src/compiler/config.h" +#include "src/compiler/ruby_generator_helpers-inl.h" +#include "src/compiler/ruby_generator_map-inl.h" +#include "src/compiler/ruby_generator_string-inl.h" + +using grpc::protobuf::FileDescriptor; +using grpc::protobuf::MethodDescriptor; +using grpc::protobuf::ServiceDescriptor; +using grpc::protobuf::io::Printer; +using grpc::protobuf::io::StringOutputStream; +using std::map; +using std::vector; + +namespace grpc_ruby_generator { +namespace { + +// Prints out the method using the ruby gRPC DSL. +void PrintMethod(const MethodDescriptor* method, Printer* out) { + TString input_type = RubyTypeOf(method->input_type()); + if (method->client_streaming()) { + input_type = "stream(" + input_type + ")"; + } + TString output_type = RubyTypeOf(method->output_type()); + if (method->server_streaming()) { + output_type = "stream(" + output_type + ")"; + } + std::map<TString, TString> method_vars = ListToDict({ + "mth.name", + method->name(), + "input.type", + input_type, + "output.type", + output_type, + }); + out->Print(GetRubyComments(method, true).c_str()); + out->Print(method_vars, "rpc :$mth.name$, $input.type$, $output.type$\n"); + out->Print(GetRubyComments(method, false).c_str()); +} + +// Prints out the service using the ruby gRPC DSL. +void PrintService(const ServiceDescriptor* service, Printer* out) { + if (service->method_count() == 0) { + return; + } + + // Begin the service module + std::map<TString, TString> module_vars = ListToDict({ + "module.name", + Modularize(service->name()), + }); + out->Print(module_vars, "module $module.name$\n"); + out->Indent(); + + out->Print(GetRubyComments(service, true).c_str()); + out->Print("class Service\n"); + + // Write the indented class body. + out->Indent(); + out->Print("\n"); + out->Print("include ::GRPC::GenericService\n"); + out->Print("\n"); + out->Print("self.marshal_class_method = :encode\n"); + out->Print("self.unmarshal_class_method = :decode\n"); + std::map<TString, TString> pkg_vars = + ListToDict({"service_full_name", service->full_name()}); + out->Print(pkg_vars, "self.service_name = '$service_full_name$'\n"); + out->Print("\n"); + for (int i = 0; i < service->method_count(); ++i) { + PrintMethod(service->method(i), out); + } + out->Outdent(); + + out->Print("end\n"); + out->Print("\n"); + out->Print("Stub = Service.rpc_stub_class\n"); + + // End the service module + out->Outdent(); + out->Print("end\n"); + out->Print(GetRubyComments(service, false).c_str()); +} + +} // namespace + +// The following functions are copied directly from the source for the protoc +// ruby generator +// to ensure compatibility (with the exception of int and string type changes). +// See +// https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/compiler/ruby/ruby_generator.cc#L250 +// TODO: keep up to date with protoc code generation, though this behavior isn't +// expected to change +bool IsLower(char ch) { return ch >= 'a' && ch <= 'z'; } + +char ToUpper(char ch) { return IsLower(ch) ? (ch - 'a' + 'A') : ch; } + +// Package names in protobuf are snake_case by convention, but Ruby module +// names must be PascalCased. +// +// foo_bar_baz -> FooBarBaz +TString PackageToModule(const TString& name) { + bool next_upper = true; + TString result; + result.reserve(name.size()); + + for (TString::size_type i = 0; i < name.size(); i++) { + if (name[i] == '_') { + next_upper = true; + } else { + if (next_upper) { + result.push_back(ToUpper(name[i])); + } else { + result.push_back(name[i]); + } + next_upper = false; + } + } + + return result; +} +// end copying of protoc generator for ruby code + +TString GetServices(const FileDescriptor* file) { + TString output; + { + // Scope the output stream so it closes and finalizes output to the string. + + StringOutputStream output_stream(&output); + Printer out(&output_stream, '$'); + + // Don't write out any output if there no services, to avoid empty service + // files being generated for proto files that don't declare any. + if (file->service_count() == 0) { + return output; + } + + TString package_name = RubyPackage(file); + + // Write out a file header. + std::map<TString, TString> header_comment_vars = ListToDict({ + "file.name", + file->name(), + "file.package", + package_name, + }); + out.Print("# Generated by the protocol buffer compiler. DO NOT EDIT!\n"); + out.Print(header_comment_vars, + "# Source: $file.name$ for package '$file.package$'\n"); + + TString leading_comments = GetRubyComments(file, true); + if (!leading_comments.empty()) { + out.Print("# Original file comments:\n"); + out.PrintRaw(leading_comments.c_str()); + } + + out.Print("\n"); + out.Print("require 'grpc'\n"); + // Write out require statemment to import the separately generated file + // that defines the messages used by the service. This is generated by the + // main ruby plugin. + std::map<TString, TString> dep_vars = ListToDict({ + "dep.name", + MessagesRequireName(file), + }); + out.Print(dep_vars, "require '$dep.name$'\n"); + + // Write out services within the modules + out.Print("\n"); + std::vector<TString> modules = Split(package_name, '.'); + for (size_t i = 0; i < modules.size(); ++i) { + std::map<TString, TString> module_vars = ListToDict({ + "module.name", + PackageToModule(modules[i]), + }); + out.Print(module_vars, "module $module.name$\n"); + out.Indent(); + } + for (int i = 0; i < file->service_count(); ++i) { + auto service = file->service(i); + PrintService(service, &out); + } + for (size_t i = 0; i < modules.size(); ++i) { + out.Outdent(); + out.Print("end\n"); + } + + out.Print(GetRubyComments(file, false).c_str()); + } + return output; +} + +} // namespace grpc_ruby_generator diff --git a/contrib/libs/grpc/src/core/lib/surface/init_unsecure.cc b/contrib/libs/grpc/src/compiler/ruby_generator.h index c9e1688d42..325dc02294 100644 --- a/contrib/libs/grpc/src/core/lib/surface/init_unsecure.cc +++ b/contrib/libs/grpc/src/compiler/ruby_generator.h @@ -16,12 +16,15 @@ * */ -#include <grpc/support/port_platform.h> +#ifndef GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_H +#define GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_H -#include <grpc/support/log.h> +#include "src/compiler/config.h" -#include "src/core/lib/surface/init.h" +namespace grpc_ruby_generator { -void grpc_security_pre_init(void) {} +TString GetServices(const grpc::protobuf::FileDescriptor* file); -void grpc_register_security_filters(void) {} +} // namespace grpc_ruby_generator + +#endif // GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_H diff --git a/contrib/libs/grpc/src/compiler/ruby_generator_helpers-inl.h b/contrib/libs/grpc/src/compiler/ruby_generator_helpers-inl.h new file mode 100644 index 0000000000..9a10976619 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/ruby_generator_helpers-inl.h @@ -0,0 +1,58 @@ +/* + * + * 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_INTERNAL_COMPILER_RUBY_GENERATOR_HELPERS_INL_H +#define GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_HELPERS_INL_H + +#include "src/compiler/config.h" +#include "src/compiler/generator_helpers.h" +#include "src/compiler/ruby_generator_string-inl.h" + +namespace grpc_ruby_generator { + +inline bool ServicesFilename(const grpc::protobuf::FileDescriptor* file, + TString* file_name_or_error) { + // Get output file name. + static const unsigned proto_suffix_length = 6; // length of ".proto" + if (file->name().size() > proto_suffix_length && + file->name().find_last_of(".proto") == file->name().size() - 1) { + *file_name_or_error = + file->name().substr(0, file->name().size() - proto_suffix_length) + + "_services_pb.rb"; + return true; + } else { + *file_name_or_error = "Invalid proto file name: must end with .proto"; + return false; + } +} + +inline TString MessagesRequireName( + const grpc::protobuf::FileDescriptor* file) { + return Replace(file->name(), ".proto", "_pb"); +} + +// Get leading or trailing comments in a string. Comment lines start with "# ". +// Leading detached comments are put in front of leading comments. +template <typename DescriptorType> +inline TString GetRubyComments(const DescriptorType* desc, bool leading) { + return grpc_generator::GetPrefixedComments(desc, leading, "#"); +} + +} // namespace grpc_ruby_generator + +#endif // GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_HELPERS_INL_H diff --git a/contrib/libs/grpc/src/compiler/ruby_generator_map-inl.h b/contrib/libs/grpc/src/compiler/ruby_generator_map-inl.h new file mode 100644 index 0000000000..1221a5a705 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/ruby_generator_map-inl.h @@ -0,0 +1,57 @@ +/* + * + * 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_INTERNAL_COMPILER_RUBY_GENERATOR_MAP_INL_H +#define GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_MAP_INL_H + +#include <initializer_list> +#include <iostream> +#include <map> +#include <ostream> // NOLINT +#include <vector> + +#include "src/compiler/config.h" + +using std::initializer_list; +using std::map; +using std::vector; + +namespace grpc_ruby_generator { + +// Converts an initializer list of the form { key0, value0, key1, value1, ... } +// into a map of key* to value*. Is merely a readability helper for later code. +inline std::map<TString, TString> ListToDict( + const initializer_list<TString>& values) { + if (values.size() % 2 != 0) { + std::cerr << "Not every 'key' has a value in `values`." << std::endl; + } + std::map<TString, TString> value_map; + auto value_iter = values.begin(); + for (unsigned i = 0; i < values.size() / 2; ++i) { + TString key = *value_iter; + ++value_iter; + TString value = *value_iter; + value_map[key] = value; + ++value_iter; + } + return value_map; +} + +} // namespace grpc_ruby_generator + +#endif // GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_MAP_INL_H diff --git a/contrib/libs/grpc/src/compiler/ruby_generator_string-inl.h b/contrib/libs/grpc/src/compiler/ruby_generator_string-inl.h new file mode 100644 index 0000000000..4859b75605 --- /dev/null +++ b/contrib/libs/grpc/src/compiler/ruby_generator_string-inl.h @@ -0,0 +1,149 @@ +/* + * + * 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_INTERNAL_COMPILER_RUBY_GENERATOR_STRING_INL_H +#define GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_STRING_INL_H + +#include <algorithm> +#include <sstream> +#include <vector> + +#include "src/compiler/config.h" + +using std::getline; +using std::transform; + +namespace grpc_ruby_generator { + +// Split splits a string using char into elems. +inline std::vector<TString>& Split(const TString& s, char delim, + std::vector<TString>* elems) { + std::stringstream ss(s); + std::string item; + while (getline(ss, item, delim)) { + elems->emplace_back(item); + } + return *elems; +} + +// Split splits a string using char, returning the result in a vector. +inline std::vector<TString> Split(const TString& s, char delim) { + std::vector<TString> elems; + Split(s, delim, &elems); + return elems; +} + +// Replace replaces from with to in s. +inline TString Replace(TString s, const TString& from, + const TString& to) { + size_t start_pos = s.find(from); + if (start_pos == TString::npos) { + return s; + } + s.replace(start_pos, from.length(), to); + return s; +} + +// ReplaceAll replaces all instances of search with replace in s. +inline TString ReplaceAll(TString s, const TString& search, + const TString& replace) { + size_t pos = 0; + while ((pos = s.find(search, pos)) != TString::npos) { + s.replace(pos, search.length(), replace); + pos += replace.length(); + } + return s; +} + +// ReplacePrefix replaces from with to in s if search is a prefix of s. +inline bool ReplacePrefix(TString* s, const TString& from, + const TString& to) { + size_t start_pos = s->find(from); + if (start_pos == TString::npos || start_pos != 0) { + return false; + } + s->replace(start_pos, from.length(), to); + return true; +} + +// Modularize converts a string into a ruby module compatible name +inline TString Modularize(TString s) { + if (s.empty()) { + return s; + } + TString new_string = ""; + bool was_last_underscore = false; + new_string.append(1, ::toupper(s[0])); + for (TString::size_type i = 1; i < s.size(); ++i) { + if (was_last_underscore && s[i] != '_') { + new_string.append(1, ::toupper(s[i])); + } else if (s[i] != '_') { + new_string.append(1, s[i]); + } + was_last_underscore = s[i] == '_'; + } + return new_string; +} + +// RubyPackage gets the ruby package in either proto or ruby_package format +inline TString RubyPackage(const grpc::protobuf::FileDescriptor* file) { + TString package_name = file->package(); + if (file->options().has_ruby_package()) { + package_name = file->options().ruby_package(); + + // If :: is in the package convert the Ruby formatted name + // -> A::B::C + // to use the dot seperator notation + // -> A.B.C + package_name = ReplaceAll(package_name, "::", "."); + } + return package_name; +} + +// RubyTypeOf updates a proto type to the required ruby equivalent. +inline TString RubyTypeOf(const grpc::protobuf::Descriptor* descriptor) { + TString proto_type = descriptor->full_name(); + if (descriptor->file()->options().has_ruby_package()) { + // remove the leading package if present + ReplacePrefix(&proto_type, descriptor->file()->package(), ""); + ReplacePrefix(&proto_type, ".", ""); // remove the leading . (no package) + proto_type = RubyPackage(descriptor->file()) + "." + proto_type; + } + TString res("." + proto_type); + if (res.find('.') == TString::npos) { + return res; + } else { + std::vector<TString> prefixes_and_type = Split(res, '.'); + res.clear(); + for (unsigned int i = 0; i < prefixes_and_type.size(); ++i) { + if (i != 0) { + res += "::"; // switch '.' to the ruby module delim + } + if (i < prefixes_and_type.size() - 1) { + res += Modularize(prefixes_and_type[i]); // capitalize pkgs + } else { + res += prefixes_and_type[i]; + } + } + return res; + } +} + +} // namespace grpc_ruby_generator + +#endif // GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_STRING_INL_H diff --git a/contrib/libs/grpc/src/core/CMakeLists.txt b/contrib/libs/grpc/src/core/CMakeLists.txt deleted file mode 100644 index 0396db380f..0000000000 --- a/contrib/libs/grpc/src/core/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ - -# This file was gererated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - -add_subdirectory(lib) diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc deleted file mode 100644 index b8b4889ee4..0000000000 --- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.cc +++ /dev/null @@ -1,36 +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/lb_policy/grpclb/grpclb_channel.h" - -#include <grpc/grpc.h> - -namespace grpc_core { - -grpc_channel_args* ModifyGrpclbBalancerChannelArgs(grpc_channel_args* args) { - return args; -} - -grpc_channel* CreateGrpclbBalancerChannel(const char* target_uri, - const grpc_channel_args& args) { - return grpc_insecure_channel_create(target_uri, &args, nullptr); -} - -} // namespace grpc_core diff --git a/contrib/libs/grpc/src/core/lib/CMakeLists.txt b/contrib/libs/grpc/src/core/lib/CMakeLists.txt deleted file mode 100644 index 18f7474d44..0000000000 --- a/contrib/libs/grpc/src/core/lib/CMakeLists.txt +++ /dev/null @@ -1,85 +0,0 @@ - -# This file was gererated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - - -add_library(src-core-lib) -target_compile_options(src-core-lib PRIVATE - -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 - -Wno-everything -) -target_include_directories(src-core-lib PUBLIC - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/include -) -target_include_directories(src-core-lib PRIVATE - ${CMAKE_BINARY_DIR}/contrib/libs/grpc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb -) -target_link_libraries(src-core-lib PUBLIC - contrib-libs-cxxsupp - yutil - grpc-third_party-upb - abseil-cpp-tstring-y_absl-base - abseil-cpp-tstring-y_absl-container - abseil-cpp-tstring-y_absl-memory - abseil-cpp-tstring-y_absl-status - abseil-cpp-tstring-y_absl-strings - abseil-cpp-tstring-y_absl-synchronization - abseil-cpp-tstring-y_absl-time - abseil-cpp-tstring-y_absl-types -) -target_sources(src-core-lib PRIVATE - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.c - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.c - ${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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/murmur_hash.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/string.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/string_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/string_util_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/string_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/sync.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/sync_abseil.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/sync_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/sync_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/time.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/time_posix.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/time_precise.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/time_windows.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/tmpfile_msys.cc - ${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/arena.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 - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/host_port.cc - ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/mpscq.cc - ${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/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_util.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 -) diff --git a/contrib/libs/grpc/src/core/lib/event_engine/event_engine_factory.h b/contrib/libs/grpc/src/core/lib/event_engine/event_engine_factory.h deleted file mode 100644 index 92e25e0252..0000000000 --- a/contrib/libs/grpc/src/core/lib/event_engine/event_engine_factory.h +++ /dev/null @@ -1,33 +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_EVENT_ENGINE_FACTORY_H -#define GRPC_CORE_LIB_EVENT_ENGINE_EVENT_ENGINE_FACTORY_H - -#include <grpc/support/port_platform.h> - -#include <grpc/event_engine/event_engine.h> - -namespace grpc_event_engine { -namespace experimental { - -/// Access the shared global EventEngine instance. -/// -/// The concept of a global EventEngine may go away in a post-iomgr world. -/// Strongly consider whether you could use \a CreateEventEngine instead. -EventEngine* GetDefaultEventEngine(); - -} // namespace experimental -} // namespace grpc_event_engine - -#endif // GRPC_CORE_LIB_EVENT_ENGINE_EVENT_ENGINE_FACTORY_H diff --git a/contrib/libs/grpc/src/core/lib/iomgr/cfstream_handle.cc b/contrib/libs/grpc/src/core/lib/iomgr/cfstream_handle.cc index b94711c6fd..2455e5ebdb 100644 --- a/contrib/libs/grpc/src/core/lib/iomgr/cfstream_handle.cc +++ b/contrib/libs/grpc/src/core/lib/iomgr/cfstream_handle.cc @@ -29,9 +29,9 @@ #include <grpc/support/sync.h> #include "src/core/lib/debug/trace.h" -#import "src/core/lib/iomgr/cfstream_handle.h" +#error #import "src/core/lib/iomgr/cfstream_handle.h" #include "src/core/lib/iomgr/closure.h" -#include "src/core/lib/iomgr/error_cfstream.h" +#error #include "src/core/lib/iomgr/error_cfstream.h" #include "src/core/lib/iomgr/ev_apple.h" #include "src/core/lib/iomgr/exec_ctx.h" diff --git a/contrib/libs/grpc/src/core/lib/iomgr/cfstream_handle.h b/contrib/libs/grpc/src/core/lib/iomgr/cfstream_handle.h deleted file mode 100644 index 2358758f14..0000000000 --- a/contrib/libs/grpc/src/core/lib/iomgr/cfstream_handle.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * - * 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. - * - */ - -/* The CFStream handle acts as an event synchronization entity for - * read/write/open/error/eos events happening on CFStream streams. */ - -#ifndef GRPC_CORE_LIB_IOMGR_CFSTREAM_HANDLE_H -#define GRPC_CORE_LIB_IOMGR_CFSTREAM_HANDLE_H - -#include <grpc/support/port_platform.h> - -#include "src/core/lib/iomgr/port.h" - -#ifdef GRPC_CFSTREAM -#import <CoreFoundation/CoreFoundation.h> - -#include "src/core/lib/gprpp/memory.h" -#include "src/core/lib/iomgr/closure.h" -#include "src/core/lib/iomgr/lockfree_event.h" - -class GrpcLibraryInitHolder { - public: - GrpcLibraryInitHolder(); - virtual ~GrpcLibraryInitHolder(); -}; - -class CFStreamHandle : public GrpcLibraryInitHolder { - public: - static CFStreamHandle* CreateStreamHandle(CFReadStreamRef read_stream, - CFWriteStreamRef write_stream); - /** Use CreateStreamHandle function instead of using this directly. */ - CFStreamHandle(CFReadStreamRef read_stream, CFWriteStreamRef write_stream); - CFStreamHandle(const CFStreamHandle& ref) = delete; - CFStreamHandle(CFStreamHandle&& ref) = delete; - CFStreamHandle& operator=(const CFStreamHandle& rhs) = delete; - ~CFStreamHandle() override; - - void NotifyOnOpen(grpc_closure* closure); - void NotifyOnRead(grpc_closure* closure); - void NotifyOnWrite(grpc_closure* closure); - void Shutdown(grpc_error_handle error); - - void Ref(const char* file = "", int line = 0, const char* reason = nullptr); - void Unref(const char* file = "", int line = 0, const char* reason = nullptr); - - private: - static void ReadCallback(CFReadStreamRef stream, CFStreamEventType type, - void* client_callback_info); - static void WriteCallback(CFWriteStreamRef stream, CFStreamEventType type, - void* client_callback_info); - static void* Retain(void* info); - static void Release(void* info); - - grpc_core::LockfreeEvent open_event_; - grpc_core::LockfreeEvent read_event_; - grpc_core::LockfreeEvent write_event_; - - dispatch_queue_t dispatch_queue_; - - gpr_refcount refcount_; -}; - -#ifdef DEBUG -#define CFSTREAM_HANDLE_REF(handle, reason) \ - (handle)->Ref(__FILE__, __LINE__, (reason)) -#define CFSTREAM_HANDLE_UNREF(handle, reason) \ - (handle)->Unref(__FILE__, __LINE__, (reason)) -#else -#define CFSTREAM_HANDLE_REF(handle, reason) (handle)->Ref() -#define CFSTREAM_HANDLE_UNREF(handle, reason) (handle)->Unref() -#endif - -#endif - -#endif /* GRPC_CORE_LIB_IOMGR_CFSTREAM_HANDLE_H */ 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 daaa154e71..1fc20da8dc 100644 --- a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc +++ b/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc @@ -30,11 +30,11 @@ #include "src/core/lib/address_utils/sockaddr_utils.h" #include "src/core/lib/gpr/string.h" -#include "src/core/lib/iomgr/cfstream_handle.h" +#error #include "src/core/lib/iomgr/cfstream_handle.h" #include "src/core/lib/iomgr/closure.h" #include "src/core/lib/iomgr/endpoint.h" -#import "src/core/lib/iomgr/endpoint_cfstream.h" -#include "src/core/lib/iomgr/error_cfstream.h" +#error #import "src/core/lib/iomgr/endpoint_cfstream.h" +#error #include "src/core/lib/iomgr/error_cfstream.h" #include "src/core/lib/iomgr/sockaddr.h" #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/slice/slice_string_helpers.h" diff --git a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.h b/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.h deleted file mode 100644 index 6f2cf1c6e0..0000000000 --- a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * - * 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_LIB_IOMGR_ENDPOINT_CFSTREAM_H -#define GRPC_CORE_LIB_IOMGR_ENDPOINT_CFSTREAM_H -/* - Low level TCP "bottom half" implementation, for use by transports built on - top of a TCP connection. - - Note that this file does not (yet) include APIs for creating the socket in - the first place. - - All calls passing slice transfer ownership of a slice refcount unless - otherwise specified. -*/ - -#include <grpc/support/port_platform.h> - -#ifdef GRPC_CFSTREAM - -#import <CoreFoundation/CoreFoundation.h> - -#include "src/core/lib/debug/trace.h" -#include "src/core/lib/iomgr/cfstream_handle.h" -#include "src/core/lib/iomgr/endpoint.h" - -grpc_endpoint* grpc_cfstream_endpoint_create(CFReadStreamRef read_stream, - CFWriteStreamRef write_stream, - const char* peer_string, - CFStreamHandle* stream_sync); - -#endif /* GRPC_CFSTREAM */ - -#endif /* GRPC_CORE_LIB_IOMGR_ENDPOINT_CFSTREAM_H */ diff --git a/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.h b/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.h deleted file mode 100644 index 2d5b744c74..0000000000 --- a/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * 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_LIB_IOMGR_ERROR_CFSTREAM_H -#define GRPC_CORE_LIB_IOMGR_ERROR_CFSTREAM_H - -#ifdef GRPC_CFSTREAM -// Create an error from Apple Core Foundation CFError object -#define GRPC_ERROR_CREATE_FROM_CFERROR(error, desc) \ - grpc_error_create_from_cferror(__FILE__, __LINE__, \ - static_cast<void*>((error)), (desc)) -grpc_error_handle grpc_error_create_from_cferror(const char* file, int line, - void* arg, const char* desc); -#endif /* GRPC_CFSTREAM */ - -#endif /* GRPC_CORE_LIB_IOMGR_ERROR_CFSTREAM_H */ 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 index e495d3c901..1fb46c920d 100644 --- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.cc +++ b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.cc @@ -17,8 +17,8 @@ #include <grpc/event_engine/event_engine.h> #include "src/core/lib/iomgr/closure.h" -#include "src/core/lib/iomgr/event_engine/closure.h" -#include "src/core/lib/iomgr/event_engine/pollset.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 { diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.h b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.h deleted file mode 100644 index 5e26cf0044..0000000000 --- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.h +++ /dev/null @@ -1,42 +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_IOMGR_EVENT_ENGINE_CLOSURE_H -#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_CLOSURE_H - -#include <grpc/support/port_platform.h> - -#include <grpc/event_engine/event_engine.h> - -#include "src/core/lib/iomgr/closure.h" -#include "src/core/lib/iomgr/error.h" - -namespace grpc_event_engine { -namespace experimental { - -/// Creates a callback that takes an error status argument. -std::function<void(y_absl::Status)> GrpcClosureToStatusCallback( - grpc_closure* closure); - -/// Create a callback that *does not* take an error status argument. -std::function<void()> GrpcClosureToCallback(grpc_closure* closure); - -/// Creates a callback that *does not* take an error status argument. -/// This version has a pre-bound error. -std::function<void()> GrpcClosureToCallback(grpc_closure* closure, - grpc_error_handle error); - -} // namespace experimental -} // namespace grpc_event_engine - -#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_CLOSURE_H 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 index 2a9da2e2a8..366d4d183a 100644 --- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.cc +++ b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.cc @@ -25,9 +25,9 @@ #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/iomgr/endpoint.h" #include "src/core/lib/iomgr/error.h" -#include "src/core/lib/iomgr/event_engine/closure.h" -#include "src/core/lib/iomgr/event_engine/endpoint.h" -#include "src/core/lib/iomgr/event_engine/pollset.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" diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.h b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.h deleted file mode 100644 index d2d16a89b9..0000000000 --- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.h +++ /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. -#ifndef GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_ENDPOINT_H -#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_ENDPOINT_H - -#include <grpc/support/port_platform.h> - -#ifdef GRPC_USE_EVENT_ENGINE -#include <grpc/event_engine/event_engine.h> - -#include "src/core/lib/iomgr/endpoint.h" -#error #include "src/core/lib/iomgr/resource_quota.h" - -struct grpc_event_engine_endpoint { - grpc_endpoint base; - std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint> - endpoint; - TString peer_address; - TString local_address; - std::aligned_storage< - sizeof(grpc_event_engine::experimental::SliceBuffer), - alignof(grpc_event_engine::experimental::SliceBuffer)>::type read_buffer; - std::aligned_storage< - sizeof(grpc_event_engine::experimental::SliceBuffer), - alignof(grpc_event_engine::experimental::SliceBuffer)>::type write_buffer; -}; - -/// Creates an internal grpc_endpoint struct from an EventEngine Endpoint. -/// Server code needs to create grpc_endpoints after the EventEngine has made -/// connections. -grpc_event_engine_endpoint* grpc_tcp_server_endpoint_create( - std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint> ee); - -/// Creates a new internal grpc_endpoint struct, when no EventEngine Endpoint -/// has yet been created. This is used in client code before connections are -/// established. Takes ownership of the slice_allocator. -grpc_endpoint* grpc_tcp_create(const grpc_channel_args* channel_args, - y_absl::string_view peer_address); - -#endif -#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_ENDPOINT_H 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 index b8e08d0695..e9486b1c5a 100644 --- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.cc +++ b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.cc @@ -16,7 +16,7 @@ #ifdef GRPC_USE_EVENT_ENGINE #include <grpc/event_engine/event_engine.h> -#include "src/core/lib/iomgr/event_engine/pollset.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" diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.h b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.h deleted file mode 100644 index 94a46c0a72..0000000000 --- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.h +++ /dev/null @@ -1,25 +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_IOMGR_EVENT_ENGINE_POLLSET_H -#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_POLLSET_H - -#include <grpc/support/port_platform.h> - -#ifdef GRPC_USE_EVENT_ENGINE - -/// Signals pollset_work that some work has been done. -void grpc_pollset_ee_broadcast_event(); - -#endif -#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_POLLSET_H diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/promise.h b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/promise.h deleted file mode 100644 index 9b34e2aed6..0000000000 --- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/promise.h +++ /dev/null @@ -1,51 +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_IOMGR_EVENT_ENGINE_PROMISE_H -#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_PROMISE_H -#include <grpc/support/port_platform.h> - -#include "src/core/lib/gprpp/sync.h" - -namespace grpc_event_engine { -namespace experimental { - -/// A minimal promise implementation. -/// -/// This is light-duty, syntactical sugar around cv wait & signal, which is -/// useful in some cases. A more robust implementation is being worked on -/// separately. -template <typename T> -class Promise { - public: - T& Get() { - y_absl::MutexLock lock(&mu_); - cv_.Wait(&mu_); - return val_; - } - void Set(T&& val) { - y_absl::MutexLock lock(&mu_); - val_ = std::move(val); - cv_.Signal(); - } - - private: - y_absl::Mutex mu_; - y_absl::CondVar cv_; - T val_; -}; - -} // namespace experimental -} // namespace grpc_event_engine - -#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_PROMISE_H 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 index c455563ccd..fd3559eef5 100644 --- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolver.cc +++ b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolver.cc @@ -19,10 +19,10 @@ #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" +#error #include "src/core/lib/event_engine/event_engine_factory.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/iomgr/error.h" -#include "src/core/lib/iomgr/event_engine/promise.h" +#error #include "src/core/lib/iomgr/event_engine/promise.h" #include "src/core/lib/iomgr/event_engine/resolved_address_internal.h" #include "src/core/lib/iomgr/resolve_address.h" #include "src/core/lib/iomgr/work_serializer.h" 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 index 4e1baf1807..a3e8eace19 100644 --- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/tcp.cc +++ b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/tcp.cc @@ -18,12 +18,12 @@ #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" +#error #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" -#include "src/core/lib/iomgr/event_engine/closure.h" -#include "src/core/lib/iomgr/event_engine/endpoint.h" -#include "src/core/lib/iomgr/event_engine/pollset.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" 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 index 6ac49f11c9..ff7547d62c 100644 --- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/timer.cc +++ b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/timer.cc @@ -16,9 +16,9 @@ #ifdef GRPC_USE_EVENT_ENGINE #include <grpc/event_engine/event_engine.h> -#include "src/core/lib/event_engine/event_engine_factory.h" +#error #include "src/core/lib/event_engine/event_engine_factory.h" #include "src/core/lib/iomgr/error.h" -#include "src/core/lib/iomgr/event_engine/closure.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" 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 f178538534..0c371a6e6b 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 @@ -34,11 +34,11 @@ #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" -#include "src/core/lib/iomgr/cfstream_handle.h" +#error #include "src/core/lib/iomgr/cfstream_handle.h" #include "src/core/lib/iomgr/closure.h" -#include "src/core/lib/iomgr/endpoint_cfstream.h" +#error #include "src/core/lib/iomgr/endpoint_cfstream.h" #include "src/core/lib/iomgr/error.h" -#include "src/core/lib/iomgr/error_cfstream.h" +#error #include "src/core/lib/iomgr/error_cfstream.h" #include "src/core/lib/iomgr/tcp_client.h" #include "src/core/lib/iomgr/timer.h" diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider_null_vtable.cc b/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider_null_vtable.cc deleted file mode 100644 index 1f1ccc984b..0000000000 --- a/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider_null_vtable.cc +++ /dev/null @@ -1,24 +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 <grpc/grpc.h> - -// Wrapper API declared in grpc.h - -// Required only for insecure build targets. -const grpc_arg_pointer_vtable* grpc_authorization_policy_provider_arg_vtable() { - return nullptr; -} diff --git a/contrib/libs/grpc/src/core/plugin_registry/grpc_unsecure_plugin_registry.cc b/contrib/libs/grpc/src/core/plugin_registry/grpc_unsecure_plugin_registry.cc deleted file mode 100644 index fe653356a3..0000000000 --- a/contrib/libs/grpc/src/core/plugin_registry/grpc_unsecure_plugin_registry.cc +++ /dev/null @@ -1,125 +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. - * - */ - -#include <grpc/support/port_platform.h> - -#include <grpc/grpc.h> - -#include "src/core/lib/config/core_configuration.h" -#include "src/core/lib/surface/builtins.h" - -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_inproc_plugin_init(void); -void grpc_inproc_plugin_shutdown(void); -void grpc_resolver_dns_ares_init(void); -void grpc_resolver_dns_ares_shutdown(void); -void grpc_resolver_dns_native_init(void); -void grpc_resolver_dns_native_shutdown(void); -void grpc_resolver_sockaddr_init(void); -void grpc_resolver_sockaddr_shutdown(void); -void grpc_resolver_fake_init(void); -void grpc_resolver_fake_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_message_size_filter_init(void); -void grpc_message_size_filter_shutdown(void); -namespace grpc_core { -void FaultInjectionFilterInit(void); -void FaultInjectionFilterShutdown(void); -void GrpcLbPolicyRingHashInit(void); -void GrpcLbPolicyRingHashShutdown(void); -void ServiceConfigParserInit(void); -void ServiceConfigParserShutdown(void); -} // namespace grpc_core - -void grpc_register_built_in_plugins(void) { - grpc_register_plugin(grpc_chttp2_plugin_init, grpc_chttp2_plugin_shutdown); - grpc_register_plugin(grpc_core::ServiceConfigParserInit, - grpc_core::ServiceConfigParserShutdown); - grpc_register_plugin(grpc_client_channel_init, grpc_client_channel_shutdown); - grpc_register_plugin(grpc_inproc_plugin_init, grpc_inproc_plugin_shutdown); - grpc_register_plugin(grpc_resolver_dns_ares_init, - grpc_resolver_dns_ares_shutdown); - grpc_register_plugin(grpc_resolver_dns_native_init, - grpc_resolver_dns_native_shutdown); - grpc_register_plugin(grpc_resolver_sockaddr_init, - grpc_resolver_sockaddr_shutdown); - grpc_register_plugin(grpc_resolver_fake_init, grpc_resolver_fake_shutdown); - grpc_register_plugin(grpc_lb_policy_grpclb_init, - grpc_lb_policy_grpclb_shutdown); - 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_message_size_filter_init, - grpc_message_size_filter_shutdown); - grpc_register_plugin(grpc_core::FaultInjectionFilterInit, - grpc_core::FaultInjectionFilterShutdown); -} - -namespace grpc_core { - -extern void BuildClientChannelConfiguration( - CoreConfiguration::Builder* builder); -extern void RegisterClientAuthorityFilter(CoreConfiguration::Builder* builder); -extern void RegisterClientIdleFilter(CoreConfiguration::Builder* builder); -extern void RegisterDeadlineFilter(CoreConfiguration::Builder* builder); -extern void RegisterGrpcLbLoadReportingFilter( - 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( - CoreConfiguration::Builder* builder); -extern void RegisterResourceQuota(CoreConfiguration::Builder* builder); - -void BuildCoreConfiguration(CoreConfiguration::Builder* builder) { - BuildClientChannelConfiguration(builder); - RegisterClientAuthorityFilter(builder); - RegisterClientIdleFilter(builder); - RegisterGrpcLbLoadReportingFilter(builder); - RegisterHttpFilters(builder); - RegisterMaxAgeFilter(builder); - RegisterDeadlineFilter(builder); - RegisterMessageSizeFilter(builder); - RegisterServiceConfigChannelArgFilter(builder); - RegisterResourceQuota(builder); - // Run last so it gets a consistent location. - // TODO(ctiller): Is this actually necessary? - RegisterBuiltins(builder); -} - -} // namespace grpc_core diff --git a/contrib/libs/grpc/src/cpp/common/alts_context.cc b/contrib/libs/grpc/src/cpp/common/alts_context.cc deleted file mode 100644 index 31f0f083ef..0000000000 --- a/contrib/libs/grpc/src/cpp/common/alts_context.cc +++ /dev/null @@ -1,127 +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/grpc_security.h> -#include <grpcpp/security/alts_context.h> - -#include "src/core/tsi/alts/handshaker/alts_tsi_handshaker.h" -#include "src/proto/grpc/gcp/altscontext.upb.h" - -namespace grpc { -namespace experimental { - -// A upb-generated grpc_gcp_AltsContext is passed in to construct an -// AltsContext. Normal users should use GetAltsContextFromAuthContext to get -// AltsContext, instead of constructing their own. -AltsContext::AltsContext(const grpc_gcp_AltsContext* ctx) { - upb_strview application_protocol = - grpc_gcp_AltsContext_application_protocol(ctx); - if (application_protocol.data != nullptr && application_protocol.size > 0) { - application_protocol_ = - TString(application_protocol.data, application_protocol.size); - } - upb_strview record_protocol = grpc_gcp_AltsContext_record_protocol(ctx); - if (record_protocol.data != nullptr && record_protocol.size > 0) { - record_protocol_ = TString(record_protocol.data, record_protocol.size); - } - upb_strview peer_service_account = - grpc_gcp_AltsContext_peer_service_account(ctx); - if (peer_service_account.data != nullptr && peer_service_account.size > 0) { - peer_service_account_ = - TString(peer_service_account.data, peer_service_account.size); - } - upb_strview local_service_account = - grpc_gcp_AltsContext_local_service_account(ctx); - if (local_service_account.data != nullptr && local_service_account.size > 0) { - local_service_account_ = - TString(local_service_account.data, local_service_account.size); - } - const grpc_gcp_RpcProtocolVersions* versions = - grpc_gcp_AltsContext_peer_rpc_versions(ctx); - if (versions != nullptr) { - const grpc_gcp_RpcProtocolVersions_Version* max_version = - grpc_gcp_RpcProtocolVersions_max_rpc_version(versions); - if (max_version != nullptr) { - int max_version_major = - grpc_gcp_RpcProtocolVersions_Version_major(max_version); - int max_version_minor = - grpc_gcp_RpcProtocolVersions_Version_minor(max_version); - peer_rpc_versions_.max_rpc_version.major_version = max_version_major; - peer_rpc_versions_.max_rpc_version.minor_version = max_version_minor; - } - const grpc_gcp_RpcProtocolVersions_Version* min_version = - grpc_gcp_RpcProtocolVersions_min_rpc_version(versions); - if (min_version != nullptr) { - int min_version_major = - grpc_gcp_RpcProtocolVersions_Version_major(min_version); - int min_version_minor = - grpc_gcp_RpcProtocolVersions_Version_minor(min_version); - peer_rpc_versions_.min_rpc_version.major_version = min_version_major; - peer_rpc_versions_.min_rpc_version.minor_version = min_version_minor; - } - } - if (grpc_gcp_AltsContext_security_level(ctx) >= GRPC_SECURITY_MIN || - grpc_gcp_AltsContext_security_level(ctx) <= GRPC_SECURITY_MAX) { - security_level_ = static_cast<grpc_security_level>( - grpc_gcp_AltsContext_security_level(ctx)); - } - if (grpc_gcp_AltsContext_has_peer_attributes(ctx)) { - size_t iter = UPB_MAP_BEGIN; - const grpc_gcp_AltsContext_PeerAttributesEntry* peer_attributes_entry = - grpc_gcp_AltsContext_peer_attributes_next(ctx, &iter); - while (peer_attributes_entry != nullptr) { - upb_strview key = - grpc_gcp_AltsContext_PeerAttributesEntry_key(peer_attributes_entry); - upb_strview val = - grpc_gcp_AltsContext_PeerAttributesEntry_value(peer_attributes_entry); - peer_attributes_map_[TString(key.data, key.size)] = - TString(val.data, val.size); - peer_attributes_entry = - grpc_gcp_AltsContext_peer_attributes_next(ctx, &iter); - } - } -} - -TString AltsContext::application_protocol() const { - return application_protocol_; -} - -TString AltsContext::record_protocol() const { return record_protocol_; } - -TString AltsContext::peer_service_account() const { - return peer_service_account_; -} - -TString AltsContext::local_service_account() const { - return local_service_account_; -} - -grpc_security_level AltsContext::security_level() const { - return security_level_; -} - -AltsContext::RpcProtocolVersions AltsContext::peer_rpc_versions() const { - return peer_rpc_versions_; -} - -const std::map<TString, TString>& AltsContext::peer_attributes() const { - return peer_attributes_map_; -} - -} // namespace experimental -} // namespace grpc diff --git a/contrib/libs/grpc/src/cpp/common/alts_util.cc b/contrib/libs/grpc/src/cpp/common/alts_util.cc deleted file mode 100644 index 4b955c621c..0000000000 --- a/contrib/libs/grpc/src/cpp/common/alts_util.cc +++ /dev/null @@ -1,82 +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 "upb/upb.hpp" - -#include <grpc/grpc_security.h> -#include <grpc/support/log.h> -#include <grpcpp/security/alts_context.h> -#include <grpcpp/security/alts_util.h> - -#include "src/core/lib/gprpp/memory.h" -#include "src/core/tsi/alts/handshaker/alts_tsi_handshaker.h" -#include "src/cpp/common/secure_auth_context.h" -#include "src/proto/grpc/gcp/altscontext.upb.h" - -namespace grpc { -namespace experimental { - -std::unique_ptr<AltsContext> GetAltsContextFromAuthContext( - const std::shared_ptr<const AuthContext>& auth_context) { - if (auth_context == nullptr) { - gpr_log(GPR_ERROR, "auth_context is nullptr."); - return nullptr; - } - std::vector<string_ref> ctx_vector = - auth_context->FindPropertyValues(TSI_ALTS_CONTEXT); - if (ctx_vector.size() != 1) { - gpr_log(GPR_ERROR, "contains zero or more than one ALTS context."); - return nullptr; - } - upb::Arena context_arena; - grpc_gcp_AltsContext* ctx = grpc_gcp_AltsContext_parse( - ctx_vector[0].data(), ctx_vector[0].size(), context_arena.ptr()); - if (ctx == nullptr) { - gpr_log(GPR_ERROR, "fails to parse ALTS context."); - return nullptr; - } - if (grpc_gcp_AltsContext_security_level(ctx) < GRPC_SECURITY_MIN || - grpc_gcp_AltsContext_security_level(ctx) > GRPC_SECURITY_MAX) { - gpr_log(GPR_ERROR, "security_level is invalid."); - return nullptr; - } - return y_absl::make_unique<AltsContext>(AltsContext(ctx)); -} - -grpc::Status AltsClientAuthzCheck( - const std::shared_ptr<const AuthContext>& auth_context, - const std::vector<TString>& expected_service_accounts) { - std::unique_ptr<AltsContext> alts_ctx = - GetAltsContextFromAuthContext(auth_context); - if (alts_ctx == nullptr) { - return grpc::Status(grpc::StatusCode::PERMISSION_DENIED, - "fails to parse ALTS context."); - } - if (std::find(expected_service_accounts.begin(), - expected_service_accounts.end(), - alts_ctx->peer_service_account()) != - expected_service_accounts.end()) { - return grpc::Status::OK; - } - return grpc::Status( - grpc::StatusCode::PERMISSION_DENIED, - "client " + alts_ctx->peer_service_account() + " is not authorized."); -} - -} // namespace experimental -} // namespace grpc diff --git a/contrib/libs/grpc/src/cpp/server/load_reporter/constants.h b/contrib/libs/grpc/src/cpp/server/load_reporter/constants.h deleted file mode 100644 index dc9fadeab0..0000000000 --- a/contrib/libs/grpc/src/cpp/server/load_reporter/constants.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * - * 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_SRC_CPP_SERVER_LOAD_REPORTER_UTIL_H -#define GRPC_SRC_CPP_SERVER_LOAD_REPORTER_UTIL_H - -#include <grpc/impl/codegen/port_platform.h> - -#include <stddef.h> - -namespace grpc { -namespace load_reporter { - -// TODO(juanlishen): Update the version number with the PR number every time -// there is any change to the server load reporter. -constexpr uint32_t kVersion = 15853; - -// TODO(juanlishen): This window size is from the internal spec for the load -// reporter. Need to ask the gRPC LB team whether we should make this and the -// fetching interval configurable. -constexpr uint32_t kFeedbackSampleWindowSeconds = 10; -constexpr uint32_t kFetchAndSampleIntervalSeconds = 1; - -constexpr size_t kLbIdLength = 8; -constexpr size_t kIpv4AddressLength = 8; -constexpr size_t kIpv6AddressLength = 32; - -constexpr char kInvalidLbId[] = "<INVALID_LBID_238dsb234890rb>"; - -// Call statuses. - -constexpr char kCallStatusOk[] = "OK"; -constexpr char kCallStatusServerError[] = "5XX"; -constexpr char kCallStatusClientError[] = "4XX"; - -// Tag keys. - -constexpr char kTagKeyToken[] = "token"; -constexpr char kTagKeyHost[] = "host"; -constexpr char kTagKeyUserId[] = "user_id"; -constexpr char kTagKeyStatus[] = "status"; -constexpr char kTagKeyMetricName[] = "metric_name"; - -// Measure names. - -constexpr char kMeasureStartCount[] = "grpc.io/lb/start_count"; -constexpr char kMeasureEndCount[] = "grpc.io/lb/end_count"; -constexpr char kMeasureEndBytesSent[] = "grpc.io/lb/bytes_sent"; -constexpr char kMeasureEndBytesReceived[] = "grpc.io/lb/bytes_received"; -constexpr char kMeasureEndLatencyMs[] = "grpc.io/lb/latency_ms"; -constexpr char kMeasureOtherCallMetric[] = "grpc.io/lb/other_call_metric"; - -// View names. - -constexpr char kViewStartCount[] = "grpc.io/lb_view/start_count"; -constexpr char kViewEndCount[] = "grpc.io/lb_view/end_count"; -constexpr char kViewEndBytesSent[] = "grpc.io/lb_view/bytes_sent"; -constexpr char kViewEndBytesReceived[] = "grpc.io/lb_view/bytes_received"; -constexpr char kViewEndLatencyMs[] = "grpc.io/lb_view/latency_ms"; -constexpr char kViewOtherCallMetricCount[] = - "grpc.io/lb_view/other_call_metric_count"; -constexpr char kViewOtherCallMetricValue[] = - "grpc.io/lb_view/other_call_metric_value"; - -} // namespace load_reporter -} // namespace grpc - -#endif // GRPC_SRC_CPP_SERVER_LOAD_REPORTER_UTIL_H diff --git a/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats.h b/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats.h deleted file mode 100644 index f514b0752f..0000000000 --- a/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * - * 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_SRC_CPP_SERVER_LOAD_REPORTER_GET_CPU_STATS_H -#define GRPC_SRC_CPP_SERVER_LOAD_REPORTER_GET_CPU_STATS_H - -#include <grpc/impl/codegen/port_platform.h> - -#include <utility> - -namespace grpc { -namespace load_reporter { - -// Reads the CPU stats (in a pair of busy and total numbers) from the system. -// The units of the stats should be the same. -std::pair<uint64_t, uint64_t> GetCpuStatsImpl(); - -} // namespace load_reporter -} // namespace grpc - -#endif // GRPC_SRC_CPP_SERVER_LOAD_REPORTER_GET_CPU_STATS_H diff --git a/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_linux.cc b/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_linux.cc deleted file mode 100644 index f778b13785..0000000000 --- a/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_linux.cc +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * 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> - -#ifdef GPR_LINUX - -#include <inttypes.h> - -#include <cstdio> - -#include "src/cpp/server/load_reporter/get_cpu_stats.h" - -namespace grpc { -namespace load_reporter { - -std::pair<uint64_t, uint64_t> GetCpuStatsImpl() { - uint64_t busy = 0, total = 0; - FILE* fp; - fp = fopen("/proc/stat", "r"); - uint64_t user, nice, system, idle; - if (fscanf(fp, "cpu %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64, &user, - &nice, &system, &idle) != 4) { - // Something bad happened with the information, so assume it's all invalid - user = nice = system = idle = 0; - } - fclose(fp); - busy = user + nice + system; - total = busy + idle; - return std::make_pair(busy, total); -} - -} // namespace load_reporter -} // namespace grpc - -#endif // GPR_LINUX diff --git a/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_macos.cc b/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_macos.cc deleted file mode 100644 index dbdde304c2..0000000000 --- a/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_macos.cc +++ /dev/null @@ -1,45 +0,0 @@ -/* - * - * 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> - -#ifdef GPR_APPLE - -#include <mach/mach.h> - -#include "src/cpp/server/load_reporter/get_cpu_stats.h" - -namespace grpc { -namespace load_reporter { - -std::pair<uint64_t, uint64_t> GetCpuStatsImpl() { - uint64_t busy = 0, total = 0; - host_cpu_load_info_data_t cpuinfo; - mach_msg_type_number_t count = HOST_CPU_LOAD_INFO_COUNT; - if (host_statistics(mach_host_self(), HOST_CPU_LOAD_INFO, - (host_info_t)&cpuinfo, &count) == KERN_SUCCESS) { - for (int i = 0; i < CPU_STATE_MAX; i++) total += cpuinfo.cpu_ticks[i]; - busy = total - cpuinfo.cpu_ticks[CPU_STATE_IDLE]; - } - return std::make_pair(busy, total); -} - -} // namespace load_reporter -} // namespace grpc - -#endif // GPR_APPLE diff --git a/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_unsupported.cc b/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_unsupported.cc deleted file mode 100644 index 80fb8b6da1..0000000000 --- a/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_unsupported.cc +++ /dev/null @@ -1,40 +0,0 @@ -/* - * - * 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> - -#if !defined(GPR_LINUX) && !defined(GPR_WINDOWS) && !defined(GPR_APPLE) - -#include <grpc/support/log.h> - -#include "src/cpp/server/load_reporter/get_cpu_stats.h" - -namespace grpc { -namespace load_reporter { - -std::pair<uint64_t, uint64_t> GetCpuStatsImpl() { - uint64_t busy = 0, total = 0; - gpr_log(GPR_ERROR, - "Platforms other than Linux, Windows, and MacOS are not supported."); - return std::make_pair(busy, total); -} - -} // namespace load_reporter -} // namespace grpc - -#endif // !defined(GPR_LINUX) && !defined(GPR_WINDOWS) && !defined(GPR_APPLE) diff --git a/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_windows.cc b/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_windows.cc deleted file mode 100644 index c03daddb35..0000000000 --- a/contrib/libs/grpc/src/cpp/server/load_reporter/get_cpu_stats_windows.cc +++ /dev/null @@ -1,56 +0,0 @@ -/* - * - * 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> - -#ifdef GPR_WINDOWS - -#include <windows.h> - -#include <cstdint> - -#include "src/cpp/server/load_reporter/get_cpu_stats.h" - -namespace grpc { -namespace load_reporter { - -namespace { - -uint64_t FiletimeToInt(const FILETIME& ft) { - ULARGE_INTEGER i; - i.LowPart = ft.dwLowDateTime; - i.HighPart = ft.dwHighDateTime; - return i.QuadPart; -} - -} // namespace - -std::pair<uint64_t, uint64_t> GetCpuStatsImpl() { - uint64_t busy = 0, total = 0; - FILETIME idle, kernel, user; - if (GetSystemTimes(&idle, &kernel, &user) != 0) { - total = FiletimeToInt(kernel) + FiletimeToInt(user); - busy = total - FiletimeToInt(idle); - } - return std::make_pair(busy, total); -} - -} // namespace load_reporter -} // namespace grpc - -#endif // GPR_WINDOWS diff --git a/contrib/libs/grpc/src/cpp/server/load_reporter/load_data_store.cc b/contrib/libs/grpc/src/cpp/server/load_reporter/load_data_store.cc deleted file mode 100644 index 78e6c32864..0000000000 --- a/contrib/libs/grpc/src/cpp/server/load_reporter/load_data_store.cc +++ /dev/null @@ -1,340 +0,0 @@ -/* - * - * 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/impl/codegen/port_platform.h> - -#include "src/cpp/server/load_reporter/load_data_store.h" - -#include <stdio.h> - -#include <cstdlib> -#include <set> -#include <unordered_map> -#include <vector> - -#include "src/core/lib/iomgr/socket_utils.h" - -namespace grpc { -namespace load_reporter { - -// Some helper functions. -namespace { - -// Given a map from type K to a set of value type V, finds the set associated -// with the given key and erases the value from the set. If the set becomes -// empty, also erases the key-set pair. Returns true if the value is erased -// successfully. -template <typename K, typename V> -bool UnorderedMapOfSetEraseKeyValue(std::unordered_map<K, std::set<V>>& map, - const K& key, const V& value) { - auto it = map.find(key); - if (it != map.end()) { - size_t erased = it->second.erase(value); - if (it->second.empty()) { - map.erase(it); - } - return erased; - } - return false; -}; - -// Given a map from type K to a set of value type V, removes the given key and -// the associated set, and returns the set. Returns an empty set if the key is -// not found. -template <typename K, typename V> -std::set<V> UnorderedMapOfSetExtract(std::unordered_map<K, std::set<V>>& map, - const K& key) { - auto it = map.find(key); - if (it != map.end()) { - auto set = std::move(it->second); - map.erase(it); - return set; - } - return {}; -}; - -// From a non-empty container, returns a pointer to a random element. -template <typename C> -const typename C::value_type* RandomElement(const C& container) { - GPR_ASSERT(!container.empty()); - auto it = container.begin(); - std::advance(it, std::rand() % container.size()); - return &(*it); -} - -} // namespace - -LoadRecordKey::LoadRecordKey(const TString& client_ip_and_token, - TString user_id) - : user_id_(std::move(user_id)) { - GPR_ASSERT(client_ip_and_token.size() >= 2); - int ip_hex_size; - GPR_ASSERT(sscanf(client_ip_and_token.substr(0, 2).c_str(), "%d", - &ip_hex_size) == 1); - GPR_ASSERT(ip_hex_size == 0 || ip_hex_size == kIpv4AddressLength || - ip_hex_size == kIpv6AddressLength); - size_t cur_pos = 2; - client_ip_hex_ = client_ip_and_token.substr(cur_pos, ip_hex_size); - cur_pos += ip_hex_size; - if (client_ip_and_token.size() - cur_pos < kLbIdLength) { - lb_id_ = kInvalidLbId; - lb_tag_ = ""; - } else { - lb_id_ = client_ip_and_token.substr(cur_pos, kLbIdLength); - lb_tag_ = client_ip_and_token.substr(cur_pos + kLbIdLength); - } -} - -TString LoadRecordKey::GetClientIpBytes() const { - if (client_ip_hex_.empty()) { - return ""; - } else if (client_ip_hex_.size() == kIpv4AddressLength) { - uint32_t ip_bytes; - if (sscanf(client_ip_hex_.c_str(), "%x", &ip_bytes) != 1) { - gpr_log(GPR_ERROR, - "Can't parse client IP (%s) from a hex string to an integer.", - client_ip_hex_.c_str()); - return ""; - } - ip_bytes = grpc_htonl(ip_bytes); - return TString(reinterpret_cast<const char*>(&ip_bytes), - sizeof(ip_bytes)); - } else if (client_ip_hex_.size() == kIpv6AddressLength) { - uint32_t ip_bytes[4]; - for (size_t i = 0; i < 4; ++i) { - if (sscanf(client_ip_hex_.substr(i * 8, (i + 1) * 8).c_str(), "%x", - ip_bytes + i) != 1) { - gpr_log( - GPR_ERROR, - "Can't parse client IP part (%s) from a hex string to an integer.", - client_ip_hex_.substr(i * 8, (i + 1) * 8).c_str()); - return ""; - } - ip_bytes[i] = grpc_htonl(ip_bytes[i]); - } - return TString(reinterpret_cast<const char*>(ip_bytes), - sizeof(ip_bytes)); - } else { - GPR_UNREACHABLE_CODE(return ""); - } -} - -LoadRecordValue::LoadRecordValue(TString metric_name, uint64_t num_calls, - double total_metric_value) { - call_metrics_.emplace(std::move(metric_name), - CallMetricValue(num_calls, total_metric_value)); -} - -void PerBalancerStore::MergeRow(const LoadRecordKey& key, - const LoadRecordValue& value) { - // During suspension, the load data received will be dropped. - if (!suspended_) { - load_record_map_[key].MergeFrom(value); - gpr_log(GPR_DEBUG, - "[PerBalancerStore %p] Load data merged (Key: %s, Value: %s).", - this, key.ToString().c_str(), value.ToString().c_str()); - } else { - gpr_log(GPR_DEBUG, - "[PerBalancerStore %p] Load data dropped (Key: %s, Value: %s).", - this, key.ToString().c_str(), value.ToString().c_str()); - } - // We always keep track of num_calls_in_progress_, so that when this - // store is resumed, we still have a correct value of - // num_calls_in_progress_. - GPR_ASSERT(static_cast<int64_t>(num_calls_in_progress_) + - value.GetNumCallsInProgressDelta() >= - 0); - num_calls_in_progress_ += value.GetNumCallsInProgressDelta(); -} - -void PerBalancerStore::Suspend() { - suspended_ = true; - load_record_map_.clear(); - gpr_log(GPR_DEBUG, "[PerBalancerStore %p] Suspended.", this); -} - -void PerBalancerStore::Resume() { - suspended_ = false; - gpr_log(GPR_DEBUG, "[PerBalancerStore %p] Resumed.", this); -} - -uint64_t PerBalancerStore::GetNumCallsInProgressForReport() { - GPR_ASSERT(!suspended_); - last_reported_num_calls_in_progress_ = num_calls_in_progress_; - return num_calls_in_progress_; -} - -void PerHostStore::ReportStreamCreated(const TString& lb_id, - const TString& load_key) { - GPR_ASSERT(lb_id != kInvalidLbId); - SetUpForNewLbId(lb_id, load_key); - // Prior to this one, there was no load balancer receiving report, so we may - // have unassigned orphaned stores to assign to this new balancer. - // TODO(juanlishen): If the load key of this new stream is the same with - // some previously adopted orphan store, we may want to take the orphan to - // this stream. Need to discuss with LB team. - if (assigned_stores_.size() == 1) { - for (const auto& p : per_balancer_stores_) { - const TString& other_lb_id = p.first; - const std::unique_ptr<PerBalancerStore>& orphaned_store = p.second; - if (other_lb_id != lb_id) { - orphaned_store->Resume(); - AssignOrphanedStore(orphaned_store.get(), lb_id); - } - } - } - // The first connected balancer will adopt the kInvalidLbId. - if (per_balancer_stores_.size() == 1) { - SetUpForNewLbId(kInvalidLbId, ""); - ReportStreamClosed(kInvalidLbId); - } -} - -void PerHostStore::ReportStreamClosed(const TString& lb_id) { - auto it_store_for_gone_lb = per_balancer_stores_.find(lb_id); - GPR_ASSERT(it_store_for_gone_lb != per_balancer_stores_.end()); - // Remove this closed stream from our records. - GPR_ASSERT(UnorderedMapOfSetEraseKeyValue( - load_key_to_receiving_lb_ids_, it_store_for_gone_lb->second->load_key(), - lb_id)); - std::set<PerBalancerStore*> orphaned_stores = - UnorderedMapOfSetExtract(assigned_stores_, lb_id); - // The stores that were assigned to this balancer are orphaned now. They - // should be re-assigned to other balancers which are still receiving reports. - for (PerBalancerStore* orphaned_store : orphaned_stores) { - const TString* new_receiver = nullptr; - auto it = load_key_to_receiving_lb_ids_.find(orphaned_store->load_key()); - if (it != load_key_to_receiving_lb_ids_.end()) { - // First, try to pick from the active balancers with the same load key. - new_receiver = RandomElement(it->second); - } else if (!assigned_stores_.empty()) { - // If failed, pick from all the remaining active balancers. - new_receiver = &(RandomElement(assigned_stores_)->first); - } - if (new_receiver != nullptr) { - AssignOrphanedStore(orphaned_store, *new_receiver); - } else { - // Load data for an LB ID that can't be assigned to any stream should - // be dropped. - orphaned_store->Suspend(); - } - } -} - -PerBalancerStore* PerHostStore::FindPerBalancerStore( - const TString& lb_id) const { - return per_balancer_stores_.find(lb_id) != per_balancer_stores_.end() - ? per_balancer_stores_.find(lb_id)->second.get() - : nullptr; -} - -const std::set<PerBalancerStore*>* PerHostStore::GetAssignedStores( - const TString& lb_id) const { - auto it = assigned_stores_.find(lb_id); - if (it == assigned_stores_.end()) return nullptr; - return &(it->second); -} - -void PerHostStore::AssignOrphanedStore(PerBalancerStore* orphaned_store, - const TString& new_receiver) { - auto it = assigned_stores_.find(new_receiver); - GPR_ASSERT(it != assigned_stores_.end()); - it->second.insert(orphaned_store); - gpr_log(GPR_INFO, - "[PerHostStore %p] Re-assigned orphaned store (%p) with original LB" - " ID of %s to new receiver %s", - this, orphaned_store, orphaned_store->lb_id().c_str(), - new_receiver.c_str()); -} - -void PerHostStore::SetUpForNewLbId(const TString& lb_id, - const TString& load_key) { - // The top-level caller (i.e., LoadReportService) should guarantee the - // lb_id is unique for each reporting stream. - GPR_ASSERT(per_balancer_stores_.find(lb_id) == per_balancer_stores_.end()); - GPR_ASSERT(assigned_stores_.find(lb_id) == assigned_stores_.end()); - load_key_to_receiving_lb_ids_[load_key].insert(lb_id); - std::unique_ptr<PerBalancerStore> per_balancer_store( - new PerBalancerStore(lb_id, load_key)); - assigned_stores_[lb_id] = {per_balancer_store.get()}; - per_balancer_stores_[lb_id] = std::move(per_balancer_store); -} - -PerBalancerStore* LoadDataStore::FindPerBalancerStore( - const string& hostname, const string& lb_id) const { - auto it = per_host_stores_.find(hostname); - if (it != per_host_stores_.end()) { - const PerHostStore& per_host_store = it->second; - return per_host_store.FindPerBalancerStore(lb_id); - } else { - return nullptr; - } -} - -void LoadDataStore::MergeRow(const TString& hostname, - const LoadRecordKey& key, - const LoadRecordValue& value) { - PerBalancerStore* per_balancer_store = - FindPerBalancerStore(hostname, key.lb_id()); - if (per_balancer_store != nullptr) { - per_balancer_store->MergeRow(key, value); - return; - } - // Unknown LB ID. Track it until its number of in-progress calls drops to - // zero. - int64_t in_progress_delta = value.GetNumCallsInProgressDelta(); - if (in_progress_delta != 0) { - auto it_tracker = unknown_balancer_id_trackers_.find(key.lb_id()); - if (it_tracker == unknown_balancer_id_trackers_.end()) { - gpr_log( - GPR_DEBUG, - "[LoadDataStore %p] Start tracking unknown balancer (lb_id_: %s).", - this, key.lb_id().c_str()); - unknown_balancer_id_trackers_.insert( - {key.lb_id(), static_cast<uint64_t>(in_progress_delta)}); - } else if ((it_tracker->second += in_progress_delta) == 0) { - unknown_balancer_id_trackers_.erase(it_tracker); - gpr_log(GPR_DEBUG, - "[LoadDataStore %p] Stop tracking unknown balancer (lb_id_: %s).", - this, key.lb_id().c_str()); - } - } -} - -const std::set<PerBalancerStore*>* LoadDataStore::GetAssignedStores( - const TString& hostname, const TString& lb_id) { - auto it = per_host_stores_.find(hostname); - if (it == per_host_stores_.end()) return nullptr; - return it->second.GetAssignedStores(lb_id); -} - -void LoadDataStore::ReportStreamCreated(const TString& hostname, - const TString& lb_id, - const TString& load_key) { - per_host_stores_[hostname].ReportStreamCreated(lb_id, load_key); -} - -void LoadDataStore::ReportStreamClosed(const TString& hostname, - const TString& lb_id) { - auto it_per_host_store = per_host_stores_.find(hostname); - GPR_ASSERT(it_per_host_store != per_host_stores_.end()); - it_per_host_store->second.ReportStreamClosed(lb_id); -} - -} // namespace load_reporter -} // namespace grpc diff --git a/contrib/libs/grpc/src/cpp/server/load_reporter/load_data_store.h b/contrib/libs/grpc/src/cpp/server/load_reporter/load_data_store.h deleted file mode 100644 index 61ba618331..0000000000 --- a/contrib/libs/grpc/src/cpp/server/load_reporter/load_data_store.h +++ /dev/null @@ -1,348 +0,0 @@ -/* - * - * 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_SRC_CPP_SERVER_LOAD_REPORTER_LOAD_DATA_STORE_H -#define GRPC_SRC_CPP_SERVER_LOAD_REPORTER_LOAD_DATA_STORE_H - -#include <grpc/support/port_platform.h> - -#include <memory> -#include <set> -#include <unordered_map> - -#include <grpc/support/log.h> -#include <grpcpp/impl/codegen/config.h> - -#include "src/cpp/server/load_reporter/constants.h" - -#include <util/string/cast.h> - -namespace grpc { -namespace load_reporter { - -// The load data storage is organized in hierarchy. The LoadDataStore is the -// top-level data store. In LoadDataStore, for each host we keep a -// PerHostStore, in which for each balancer we keep a PerBalancerStore. Each -// PerBalancerStore maintains a map of load records, mapping from LoadRecordKey -// to LoadRecordValue. The LoadRecordValue contains a map of customized call -// metrics, mapping from a call metric name to the CallMetricValue. - -// The value of a customized call metric. -class CallMetricValue { - public: - explicit CallMetricValue(uint64_t num_calls = 0, - double total_metric_value = 0) - : num_calls_(num_calls), total_metric_value_(total_metric_value) {} - - void MergeFrom(CallMetricValue other) { - num_calls_ += other.num_calls_; - total_metric_value_ += other.total_metric_value_; - } - - // Getters. - uint64_t num_calls() const { return num_calls_; } - double total_metric_value() const { return total_metric_value_; } - - private: - // The number of calls that finished with this metric. - uint64_t num_calls_ = 0; - // The sum of metric values across all the calls that finished with this - // metric. - double total_metric_value_ = 0; -}; - -// The key of a load record. -class LoadRecordKey { - public: - LoadRecordKey(TString lb_id, TString lb_tag, TString user_id, - TString client_ip_hex) - : lb_id_(std::move(lb_id)), - lb_tag_(std::move(lb_tag)), - user_id_(std::move(user_id)), - client_ip_hex_(std::move(client_ip_hex)) {} - - // Parses the input client_ip_and_token to set client IP, LB ID, and LB tag. - LoadRecordKey(const TString& client_ip_and_token, TString user_id); - - TString ToString() const { - return "[lb_id_=" + lb_id_ + ", lb_tag_=" + lb_tag_ + - ", user_id_=" + user_id_ + ", client_ip_hex_=" + client_ip_hex_ + - "]"; - } - - bool operator==(const LoadRecordKey& other) const { - return lb_id_ == other.lb_id_ && lb_tag_ == other.lb_tag_ && - user_id_ == other.user_id_ && client_ip_hex_ == other.client_ip_hex_; - } - - // Gets the client IP bytes in network order (i.e., big-endian). - TString GetClientIpBytes() const; - - // Getters. - const TString& lb_id() const { return lb_id_; } - const TString& lb_tag() const { return lb_tag_; } - const TString& user_id() const { return user_id_; } - const TString& client_ip_hex() const { return client_ip_hex_; } - - struct Hasher { - void hash_combine(size_t* seed, const TString& k) const { - *seed ^= std::hash<TString>()(k) + 0x9e3779b9 + (*seed << 6) + - (*seed >> 2); - } - - size_t operator()(const LoadRecordKey& k) const { - size_t h = 0; - hash_combine(&h, k.lb_id_); - hash_combine(&h, k.lb_tag_); - hash_combine(&h, k.user_id_); - hash_combine(&h, k.client_ip_hex_); - return h; - } - }; - - private: - TString lb_id_; - TString lb_tag_; - TString user_id_; - TString client_ip_hex_; -}; - -// The value of a load record. -class LoadRecordValue { - public: - explicit LoadRecordValue(uint64_t start_count = 0, uint64_t ok_count = 0, - uint64_t error_count = 0, uint64_t bytes_sent = 0, - uint64_t bytes_recv = 0, uint64_t latency_ms = 0) - : start_count_(start_count), - ok_count_(ok_count), - error_count_(error_count), - bytes_sent_(bytes_sent), - bytes_recv_(bytes_recv), - latency_ms_(latency_ms) {} - - LoadRecordValue(TString metric_name, uint64_t num_calls, - double total_metric_value); - - void MergeFrom(const LoadRecordValue& other) { - start_count_ += other.start_count_; - ok_count_ += other.ok_count_; - error_count_ += other.error_count_; - bytes_sent_ += other.bytes_sent_; - bytes_recv_ += other.bytes_recv_; - latency_ms_ += other.latency_ms_; - for (const auto& p : other.call_metrics_) { - const TString& key = p.first; - const CallMetricValue& value = p.second; - call_metrics_[key].MergeFrom(value); - } - } - - int64_t GetNumCallsInProgressDelta() const { - return static_cast<int64_t>(start_count_ - ok_count_ - error_count_); - } - - TString ToString() const { - return "[start_count_=" + ::ToString(start_count_) + - ", ok_count_=" + ::ToString(ok_count_) + - ", error_count_=" + ::ToString(error_count_) + - ", bytes_sent_=" + ::ToString(bytes_sent_) + - ", bytes_recv_=" + ::ToString(bytes_recv_) + - ", latency_ms_=" + ::ToString(latency_ms_) + ", " + - ::ToString(call_metrics_.size()) + " other call metric(s)]"; - } - - bool InsertCallMetric(const TString& metric_name, - const CallMetricValue& metric_value) { - return call_metrics_.insert({metric_name, metric_value}).second; - } - - // Getters. - uint64_t start_count() const { return start_count_; } - uint64_t ok_count() const { return ok_count_; } - uint64_t error_count() const { return error_count_; } - uint64_t bytes_sent() const { return bytes_sent_; } - uint64_t bytes_recv() const { return bytes_recv_; } - uint64_t latency_ms() const { return latency_ms_; } - const std::unordered_map<TString, CallMetricValue>& call_metrics() const { - return call_metrics_; - } - - private: - uint64_t start_count_ = 0; - uint64_t ok_count_ = 0; - uint64_t error_count_ = 0; - uint64_t bytes_sent_ = 0; - uint64_t bytes_recv_ = 0; - uint64_t latency_ms_ = 0; - std::unordered_map<TString, CallMetricValue> call_metrics_; -}; - -// Stores the data associated with a particular LB ID. -class PerBalancerStore { - public: - using LoadRecordMap = - std::unordered_map<LoadRecordKey, LoadRecordValue, LoadRecordKey::Hasher>; - - PerBalancerStore(TString lb_id, TString load_key) - : lb_id_(std::move(lb_id)), load_key_(std::move(load_key)) {} - - // Merge a load record with the given key and value if the store is not - // suspended. - void MergeRow(const LoadRecordKey& key, const LoadRecordValue& value); - - // Suspend this store, so that no detailed load data will be recorded. - void Suspend(); - // Resume this store from suspension. - void Resume(); - // Is this store suspended or not? - bool IsSuspended() const { return suspended_; } - - bool IsNumCallsInProgressChangedSinceLastReport() const { - return num_calls_in_progress_ != last_reported_num_calls_in_progress_; - } - - uint64_t GetNumCallsInProgressForReport(); - - TString ToString() { - return "[PerBalancerStore lb_id_=" + lb_id_ + " load_key_=" + load_key_ + - "]"; - } - - void ClearLoadRecordMap() { load_record_map_.clear(); } - - // Getters. - const TString& lb_id() const { return lb_id_; } - const TString& load_key() const { return load_key_; } - const LoadRecordMap& load_record_map() const { return load_record_map_; } - - private: - TString lb_id_; - // TODO(juanlishen): Use bytestring protobuf type? - TString load_key_; - LoadRecordMap load_record_map_; - uint64_t num_calls_in_progress_ = 0; - uint64_t last_reported_num_calls_in_progress_ = 0; - bool suspended_ = false; -}; - -// Stores the data associated with a particular host. -class PerHostStore { - public: - // When a report stream is created, a PerBalancerStore is created for the - // LB ID (guaranteed unique) associated with that stream. If it is the only - // active store, adopt all the orphaned stores. If it is the first created - // store, adopt the store of kInvalidLbId. - void ReportStreamCreated(const TString& lb_id, - const TString& load_key); - - // When a report stream is closed, the PerBalancerStores assigned to the - // associate LB ID need to be re-assigned to other active balancers, - // ideally with the same load key. If there is no active balancer, we have - // to suspend those stores and drop the incoming load data until they are - // resumed. - void ReportStreamClosed(const TString& lb_id); - - // Returns null if not found. Caller doesn't own the returned store. - PerBalancerStore* FindPerBalancerStore(const TString& lb_id) const; - - // Returns null if lb_id is not found. The returned pointer points to the - // underlying data structure, which is not owned by the caller. - const std::set<PerBalancerStore*>* GetAssignedStores( - const TString& lb_id) const; - - private: - // Creates a PerBalancerStore for the given LB ID, assigns the store to - // itself, and records the LB ID to the load key. - void SetUpForNewLbId(const TString& lb_id, const TString& load_key); - - void AssignOrphanedStore(PerBalancerStore* orphaned_store, - const TString& new_receiver); - - std::unordered_map<TString, std::set<TString>> - load_key_to_receiving_lb_ids_; - - // Key: LB ID. The key set includes all the LB IDs that have been - // allocated for reporting streams so far. - // Value: the unique pointer to the PerBalancerStore of the LB ID. - std::unordered_map<TString, std::unique_ptr<PerBalancerStore>> - per_balancer_stores_; - - // Key: LB ID. The key set includes the LB IDs of the balancers that are - // currently receiving report. - // Value: the set of raw pointers to the PerBalancerStores assigned to the LB - // ID. Note that the sets in assigned_stores_ form a division of the value set - // of per_balancer_stores_. - std::unordered_map<TString, std::set<PerBalancerStore*>> assigned_stores_; -}; - -// Thread-unsafe two-level bookkeeper of all the load data. -// Note: We never remove any store objects from this class, as per the -// current spec. That's because premature removal of the store objects -// may lead to loss of critical information, e.g., mapping from lb_id to -// load_key, and the number of in-progress calls. Such loss will cause -// information inconsistency when the balancer is re-connected. Keeping -// all the stores should be fine for PerHostStore, since we assume there -// should only be a few hostnames. But it's a potential problem for -// PerBalancerStore. -class LoadDataStore { - public: - // Returns null if not found. Caller doesn't own the returned store. - PerBalancerStore* FindPerBalancerStore(const TString& hostname, - const TString& lb_id) const; - - // Returns null if hostname or lb_id is not found. The returned pointer points - // to the underlying data structure, which is not owned by the caller. - const std::set<PerBalancerStore*>* GetAssignedStores(const string& hostname, - const string& lb_id); - - // If a PerBalancerStore can be found by the hostname and LB ID in - // LoadRecordKey, the load data will be merged to that store. Otherwise, - // only track the number of the in-progress calls for this unknown LB ID. - void MergeRow(const TString& hostname, const LoadRecordKey& key, - const LoadRecordValue& value); - - // Is the given lb_id a tracked unknown LB ID (i.e., the LB ID was associated - // with some received load data but unknown to this load data store)? - bool IsTrackedUnknownBalancerId(const TString& lb_id) const { - return unknown_balancer_id_trackers_.find(lb_id) != - unknown_balancer_id_trackers_.end(); - } - - // Wrapper around PerHostStore::ReportStreamCreated. - void ReportStreamCreated(const TString& hostname, - const TString& lb_id, - const TString& load_key); - - // Wrapper around PerHostStore::ReportStreamClosed. - void ReportStreamClosed(const TString& hostname, - const TString& lb_id); - - private: - // Buffered data that was fetched from Census but hasn't been sent to - // balancer. We need to keep this data ourselves because Census will - // delete the data once it's returned. - std::unordered_map<TString, PerHostStore> per_host_stores_; - - // Tracks the number of in-progress calls for each unknown LB ID. - std::unordered_map<TString, uint64_t> unknown_balancer_id_trackers_; -}; - -} // namespace load_reporter -} // namespace grpc - -#endif // GRPC_SRC_CPP_SERVER_LOAD_REPORTER_LOAD_DATA_STORE_H diff --git a/contrib/libs/grpc/src/cpp/server/load_reporter/util.cc b/contrib/libs/grpc/src/cpp/server/load_reporter/util.cc deleted file mode 100644 index 4b4e778a62..0000000000 --- a/contrib/libs/grpc/src/cpp/server/load_reporter/util.cc +++ /dev/null @@ -1,46 +0,0 @@ -/* - * - * 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/impl/codegen/port_platform.h> - -#include <cmath> - -#include <grpc/support/log.h> -#include <grpcpp/ext/server_load_reporting.h> - -namespace grpc { -namespace load_reporter { -namespace experimental { - -void AddLoadReportingCost(grpc::ServerContext* ctx, - const TString& cost_name, double cost_value) { - if (std::isnormal(cost_value)) { - TString buf; - buf.resize(sizeof(cost_value) + cost_name.size()); - memcpy(&(*buf.begin()), &cost_value, sizeof(cost_value)); - memcpy(&(*buf.begin()) + sizeof(cost_value), cost_name.data(), - cost_name.size()); - ctx->AddTrailingMetadata(GRPC_LB_COST_MD_KEY, buf); - } else { - gpr_log(GPR_ERROR, "Call metric value is not normal."); - } -} - -} // namespace experimental -} // namespace load_reporter -} // namespace grpc diff --git a/contrib/libs/grpc/src/cpp/util/error_details.cc b/contrib/libs/grpc/src/cpp/util/error_details.cc deleted file mode 100644 index 0330f012c2..0000000000 --- a/contrib/libs/grpc/src/cpp/util/error_details.cc +++ /dev/null @@ -1,19 +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 <grpcpp/support/error_details.h> diff --git a/contrib/libs/grpc/tools/README.md b/contrib/libs/grpc/tools/README.md deleted file mode 100644 index 3cef618179..0000000000 --- a/contrib/libs/grpc/tools/README.md +++ /dev/null @@ -1,23 +0,0 @@ -buildgen: Template renderer for our build system. - -distrib: Scripts to distribute language-specific packages and other distribution-related helper scripts. - -dockerfile: Docker files to test gRPC. - -doxygen: gRPC C/C++ documentation generation via Doxygen. - -gce: Scripts to help setup testing infrastructure on GCE. - -gcp: Helper scripts for interacting with various services on GCP (like Google -container engine, BigQuery etc) - -internal_ci: Support for running tests on an internal CI platform. - -interop_matrix: Scripts to build, upload, and run gRPC clients in docker with various language/runtimes. - -jenkins: Support for running tests on Jenkins. - -run_tests: Scripts to run gRPC tests in parallel. - -run_tests/performance: See the [README](./run_tests/performance/README.md) for -more notes on the performance tests. diff --git a/contrib/libs/grpc/tools/codegen/core/gen_hpack_tables.cc b/contrib/libs/grpc/tools/codegen/core/gen_hpack_tables.cc deleted file mode 100644 index d01a90eb78..0000000000 --- a/contrib/libs/grpc/tools/codegen/core/gen_hpack_tables.cc +++ /dev/null @@ -1,247 +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. - * - */ - -/* generates constant tables for hpack.cc */ - -#include <assert.h> -#include <stddef.h> -#include <stdio.h> -#include <string.h> - -#include <grpc/support/log.h> -#include "src/core/ext/transport/chttp2/transport/huffsyms.h" - -/* - * Huffman decoder table generation - */ - -#define MAXHUFFSTATES 1024 - -/* represents a set of symbols as an array of booleans indicating inclusion */ -typedef struct { char included[GRPC_CHTTP2_NUM_HUFFSYMS]; } symset; -/* represents a lookup table indexed by a nibble */ -typedef struct { unsigned values[16]; } nibblelut; - -#define NOT_SET (~(unsigned)0) - -/* returns a symset that includes all possible symbols */ -static symset symset_all(void) { - symset x; - memset(x.included, 1, sizeof(x.included)); - return x; -} - -/* returns a symset that includes no symbols */ -static symset symset_none(void) { - symset x; - memset(x.included, 0, sizeof(x.included)); - return x; -} - -/* returns an empty nibblelut */ -static nibblelut nibblelut_empty(void) { - nibblelut x; - int i; - for (i = 0; i < 16; i++) { - x.values[i] = NOT_SET; - } - return x; -} - -/* counts symbols in a symset - only used for debug builds */ -#ifndef NDEBUG -static int nsyms(symset s) { - int i; - int c = 0; - for (i = 0; i < GRPC_CHTTP2_NUM_HUFFSYMS; i++) { - c += s.included[i] != 0; - } - return c; -} -#endif - -/* global table of discovered huffman decoding states */ -static struct { - /* the bit offset that this state starts at */ - unsigned bitofs; - /* the set of symbols that this state started with */ - symset syms; - - /* lookup table for the next state */ - nibblelut next; - /* lookup table for what to emit */ - nibblelut emit; -} huffstates[MAXHUFFSTATES]; -static unsigned nhuffstates = 0; - -/* given a number of decoded bits and a set of symbols that are live, - return the index into the decoder table for this state. - set isnew to 1 if this state was previously undiscovered */ -static unsigned state_index(unsigned bitofs, symset syms, unsigned *isnew) { - unsigned i; - for (i = 0; i < nhuffstates; i++) { - if (huffstates[i].bitofs != bitofs) continue; - if (0 != memcmp(huffstates[i].syms.included, syms.included, - GRPC_CHTTP2_NUM_HUFFSYMS)) - continue; - *isnew = 0; - return i; - } - GPR_ASSERT(nhuffstates != MAXHUFFSTATES); - - i = nhuffstates; - nhuffstates++; - - huffstates[i].bitofs = bitofs; - huffstates[i].syms = syms; - huffstates[i].next = nibblelut_empty(); - huffstates[i].emit = nibblelut_empty(); - *isnew = 1; - return i; -} - -/* recursively build a decoding table - - state - the huffman state that we are trying to fill in - nibble - the current nibble - nibbits - the number of bits in the nibble that have been filled in - bitofs - the number of bits of symbol that have been decoded - emit - the symbol to emit on this nibble (or -1 if no symbol has been - found) - syms - the set of symbols that could be matched */ -static void build_dec_tbl(unsigned state, unsigned nibble, int nibbits, - unsigned bitofs, unsigned emit, symset syms) { - unsigned i; - unsigned bit; - - /* If we have four bits in the nibble we're looking at, then we can fill in - a slot in the lookup tables. */ - if (nibbits == 4) { - unsigned isnew; - /* Find the state that we are in: this may be a new state, in which case - we recurse to fill it in, or we may have already seen this state, in - which case the recursion terminates */ - unsigned st = state_index(bitofs, syms, &isnew); - GPR_ASSERT(huffstates[state].next.values[nibble] == NOT_SET); - huffstates[state].next.values[nibble] = st; - huffstates[state].emit.values[nibble] = emit; - if (isnew) { - build_dec_tbl(st, 0, 0, bitofs, NOT_SET, syms); - } - return; - } - - assert(nsyms(syms)); - - /* A bit can be 0 or 1 */ - for (bit = 0; bit < 2; bit++) { - /* walk over active symbols and see if they have this bit set */ - symset nextsyms = symset_none(); - for (i = 0; i < GRPC_CHTTP2_NUM_HUFFSYMS; i++) { - if (!syms.included[i]) continue; /* disregard inactive symbols */ - if (((grpc_chttp2_huffsyms[i].bits >> - (grpc_chttp2_huffsyms[i].length - bitofs - 1)) & - 1) == bit) { - /* the bit is set, include it in the next recursive set */ - if (grpc_chttp2_huffsyms[i].length == bitofs + 1) { - /* additionally, we've gotten to the end of a symbol - this is a - special recursion step: re-activate all the symbols, reset - bitofs to zero, and recurse */ - build_dec_tbl(state, (nibble << 1) | bit, nibbits + 1, 0, i, - symset_all()); - /* skip the remainder of this loop */ - goto next; - } - nextsyms.included[i] = 1; - } - } - /* recurse down for this bit */ - build_dec_tbl(state, (nibble << 1) | bit, nibbits + 1, bitofs + 1, emit, - nextsyms); - next:; - } -} - -static nibblelut ctbl[MAXHUFFSTATES]; -static int nctbl; - -static int ctbl_idx(nibblelut x) { - int i; - for (i = 0; i < nctbl; i++) { - if (0 == memcmp(&x, ctbl + i, sizeof(nibblelut))) return i; - } - ctbl[i] = x; - nctbl++; - return i; -} - -static void dump_ctbl(const char *name) { - int i, j; - printf("static const gpr_int16 %s[%d*16] = {\n", name, nctbl); - for (i = 0; i < nctbl; i++) { - for (j = 0; j < 16; j++) { - printf("%d,", ctbl[i].values[j]); - } - printf("\n"); - } - printf("};\n"); -} - -static void generate_huff_tables(void) { - unsigned i; - build_dec_tbl(state_index(0, symset_all(), &i), 0, 0, 0, NOT_SET, - symset_all()); - - nctbl = 0; - printf("static const gpr_uint8 next_tbl[%d] = {", nhuffstates); - for (i = 0; i < nhuffstates; i++) { - printf("%d,", ctbl_idx(huffstates[i].next)); - } - printf("};\n"); - dump_ctbl("next_sub_tbl"); - - nctbl = 0; - printf("static const gpr_uint16 emit_tbl[%d] = {", nhuffstates); - for (i = 0; i < nhuffstates; i++) { - printf("%d,", ctbl_idx(huffstates[i].emit)); - } - printf("};\n"); - dump_ctbl("emit_sub_tbl"); -} - -static void generate_base64_huff_encoder_table(void) { - static const char alphabet[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - int i; - - printf( - "static const struct { gpr_uint16 bits, gpr_uint8 length } " - "base64_syms[64] = {\n"); - for (i = 0; i < 64; i++) { - printf("{0x%x, %d},", grpc_chttp2_huffsyms[(unsigned char)alphabet[i]].bits, - grpc_chttp2_huffsyms[(unsigned char)alphabet[i]].length); - } - printf("};\n"); -} - -int main(void) { - generate_huff_tables(); - generate_base64_huff_encoder_table(); - - return 0; -} |