grpc 1.73.0 → 1.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +38 -17
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +11 -5
- data/include/grpc/event_engine/event_engine.h +74 -17
- data/include/grpc/grpc_posix.h +20 -1
- data/include/grpc/impl/channel_arg_names.h +2 -4
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/json.h +24 -0
- data/src/core/call/interception_chain.h +7 -11
- data/src/core/channelz/channel_trace.cc +213 -115
- data/src/core/channelz/channel_trace.h +380 -86
- data/src/core/channelz/channelz.cc +270 -181
- data/src/core/channelz/channelz.h +168 -55
- data/src/core/channelz/channelz_registry.cc +2 -1
- data/src/core/channelz/channelz_registry.h +24 -0
- data/src/core/channelz/property_list.cc +357 -0
- data/src/core/channelz/property_list.h +202 -0
- data/src/core/channelz/ztrace_collector.h +3 -2
- data/src/core/client_channel/backup_poller.cc +17 -2
- data/src/core/client_channel/client_channel.cc +17 -28
- data/src/core/client_channel/client_channel_filter.cc +19 -29
- data/src/core/client_channel/config_selector.h +8 -2
- data/src/core/client_channel/dynamic_filters.cc +5 -6
- data/src/core/client_channel/dynamic_filters.h +1 -1
- data/src/core/client_channel/global_subchannel_pool.cc +4 -1
- data/src/core/client_channel/retry_filter.cc +21 -27
- data/src/core/client_channel/retry_filter.h +10 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
- data/src/core/client_channel/retry_interceptor.cc +30 -44
- data/src/core/client_channel/retry_interceptor.h +18 -17
- data/src/core/client_channel/retry_throttle.cc +46 -61
- data/src/core/client_channel/retry_throttle.h +17 -39
- data/src/core/client_channel/subchannel.cc +43 -19
- data/src/core/client_channel/subchannel.h +8 -0
- data/src/core/config/config_vars.cc +2 -0
- data/src/core/config/core_configuration.cc +1 -0
- data/src/core/config/core_configuration.h +11 -0
- data/src/core/credentials/call/call_creds_registry.h +125 -0
- data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
- data/src/core/credentials/call/jwt_util.cc +70 -0
- data/src/core/credentials/call/jwt_util.h +32 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +0 -1
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
- data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
- data/src/core/ext/filters/http/client_authority_filter.cc +2 -4
- data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
- data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +162 -115
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
- data/src/core/ext/transport/chttp2/transport/flow_control.h +22 -17
- data/src/core/ext/transport/chttp2/transport/frame.cc +10 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -22
- data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
- data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +37 -11
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
- data/src/core/filter/auth/auth_filters.h +0 -25
- data/src/core/filter/auth/client_auth_filter.cc +0 -118
- data/src/core/filter/filter_args.h +9 -23
- data/src/core/handshaker/handshaker.cc +23 -14
- data/src/core/handshaker/handshaker.h +3 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -5
- data/src/core/handshaker/security/secure_endpoint.cc +70 -25
- data/src/core/handshaker/security/security_handshaker.cc +4 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
- data/src/core/lib/channel/channel_args.cc +15 -0
- data/src/core/lib/channel/channel_args.h +3 -0
- data/src/core/lib/channel/channel_stack.cc +22 -23
- data/src/core/lib/channel/channel_stack.h +9 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
- data/src/core/lib/channel/promise_based_filter.h +5 -5
- data/src/core/lib/debug/trace_impl.h +0 -1
- data/src/core/lib/event_engine/ares_resolver.cc +165 -46
- data/src/core/lib/event_engine/ares_resolver.h +48 -2
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -4
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -6
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
- data/src/core/lib/event_engine/event_engine.cc +7 -0
- data/src/core/lib/event_engine/extensions/channelz.h +10 -6
- data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +130 -162
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +11 -15
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +75 -117
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -9
- data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -15
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +0 -18
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +29 -19
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +145 -92
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +333 -116
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +61 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +45 -37
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -170
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
- data/src/core/lib/event_engine/shim.cc +9 -0
- data/src/core/lib/event_engine/shim.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -0
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
- data/src/core/lib/experiments/experiments.cc +45 -93
- data/src/core/lib/experiments/experiments.h +21 -51
- data/src/core/lib/iomgr/endpoint.cc +4 -3
- data/src/core/lib/iomgr/endpoint.h +7 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
- data/src/core/lib/iomgr/tcp_posix.cc +12 -6
- data/src/core/lib/iomgr/tcp_windows.cc +3 -2
- data/src/core/lib/promise/activity.h +1 -0
- data/src/core/lib/promise/arena_promise.h +23 -7
- data/src/core/lib/promise/detail/promise_factory.h +10 -0
- data/src/core/lib/promise/detail/promise_like.h +118 -11
- data/src/core/lib/promise/detail/promise_variant.h +50 -0
- data/src/core/lib/promise/detail/seq_state.h +687 -548
- data/src/core/lib/promise/if.h +20 -0
- data/src/core/lib/promise/inter_activity_latch.h +147 -0
- data/src/core/lib/promise/inter_activity_mutex.h +547 -0
- data/src/core/lib/promise/loop.h +65 -3
- data/src/core/lib/promise/map.h +24 -0
- data/src/core/lib/promise/match_promise.h +103 -0
- data/src/core/lib/promise/mpsc.cc +425 -0
- data/src/core/lib/promise/mpsc.h +490 -0
- data/src/core/lib/promise/party.cc +50 -1
- data/src/core/lib/promise/party.h +66 -1
- data/src/core/lib/promise/race.h +31 -0
- data/src/core/lib/promise/seq.h +4 -1
- data/src/core/lib/promise/status_flag.h +7 -0
- data/src/core/lib/promise/try_seq.h +4 -1
- data/src/core/lib/promise/wait_set.cc +28 -0
- data/src/core/lib/promise/wait_set.h +86 -0
- data/src/core/lib/resource_quota/arena.h +19 -0
- data/src/core/lib/slice/slice.h +5 -0
- data/src/core/lib/surface/channel_create.cc +88 -13
- data/src/core/lib/surface/channel_create.h +4 -0
- data/src/core/lib/surface/channel_init.cc +164 -47
- data/src/core/lib/surface/channel_init.h +64 -1
- data/src/core/lib/surface/filter_stack_call.cc +18 -9
- data/src/core/lib/surface/init.cc +6 -15
- data/src/core/lib/surface/legacy_channel.cc +3 -5
- data/src/core/lib/surface/legacy_channel.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +110 -0
- data/src/core/lib/transport/promise_endpoint.h +307 -0
- data/src/core/load_balancing/child_policy_handler.cc +2 -4
- data/src/core/load_balancing/delegating_helper.h +2 -3
- data/src/core/load_balancing/health_check_client.cc +1 -5
- data/src/core/load_balancing/lb_policy.h +1 -3
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +3 -0
- data/src/core/load_balancing/xds/cds.cc +10 -1
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/resolver/xds/xds_config.cc +6 -3
- data/src/core/resolver/xds/xds_config.h +9 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +21 -6
- data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +31 -11
- data/src/core/server/server.cc +83 -12
- data/src/core/server/server.h +21 -2
- data/src/core/server/xds_server_config_fetcher.cc +63 -25
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/telemetry/context_list_entry.h +42 -12
- data/src/core/telemetry/stats_data.cc +233 -207
- data/src/core/telemetry/stats_data.h +250 -153
- data/src/core/telemetry/tcp_tracer.h +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
- data/src/core/tsi/fake_transport_security.cc +17 -0
- data/src/core/tsi/ssl_transport_security.cc +2 -0
- data/src/core/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/backoff.cc +1 -5
- data/src/core/util/backoff.h +1 -0
- data/src/core/util/down_cast.h +1 -1
- data/src/core/util/function_signature.h +15 -1
- data/src/core/util/http_client/httpcli.cc +12 -5
- data/src/core/util/http_client/httpcli.h +4 -1
- data/src/core/util/latent_see.h +8 -5
- data/src/core/util/log.cc +4 -0
- data/src/core/util/memory_usage.h +268 -0
- data/src/core/util/per_cpu.cc +2 -0
- data/src/core/util/per_cpu.h +7 -0
- data/src/core/util/shared_bit_gen.h +20 -0
- data/src/core/util/single_set_ptr.h +2 -2
- data/src/core/util/upb_utils.h +42 -0
- data/src/core/util/uri.cc +3 -2
- data/src/core/util/useful.h +53 -2
- data/src/core/util/wait_for_single_owner.cc +31 -0
- data/src/core/util/wait_for_single_owner.h +24 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
- data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
- data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_filter.h +7 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
- data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
- data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
- data/src/core/xds/grpc/xds_server_grpc.h +10 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
- data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
- data/src/core/xds/xds_client/xds_client.cc +26 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -8
- data/src/ruby/ext/grpc/rb_channel.c +72 -568
- data/src/ruby/ext/grpc/rb_channel.h +0 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
- data/src/ruby/ext/grpc/rb_grpc.c +9 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/ext/grpc/rb_loader.c +0 -4
- data/src/ruby/ext/grpc/rb_server.c +31 -50
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/core_spec.rb +22 -0
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
- data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
- data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
- data/third_party/abseil-cpp/absl/base/config.h +20 -129
- data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
- data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
- data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
- data/third_party/abseil-cpp/absl/base/options.h +3 -80
- data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
- data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
- data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
- data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
- data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
- data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
- data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/third_party/abseil-cpp/absl/log/check.h +2 -1
- data/third_party/abseil-cpp/absl/log/globals.h +4 -5
- data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
- data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
- data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
- data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
- data/third_party/abseil-cpp/absl/log/log.h +48 -35
- data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
- data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- data/third_party/abseil-cpp/absl/random/random.h +88 -53
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
- data/third_party/abseil-cpp/absl/status/status.cc +4 -8
- data/third_party/abseil-cpp/absl/status/status.h +8 -8
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
- data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
- data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
- data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
- data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
- data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
- data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
- data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
- data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
- data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- data/third_party/abseil-cpp/absl/time/time.h +20 -15
- data/third_party/abseil-cpp/absl/types/optional.h +7 -747
- data/third_party/abseil-cpp/absl/types/span.h +13 -11
- data/third_party/abseil-cpp/absl/types/variant.h +5 -784
- data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
- metadata +72 -20
- data/src/core/lib/event_engine/forkable.cc +0 -105
- data/src/core/lib/event_engine/forkable.h +0 -67
- data/src/core/lib/iomgr/python_util.h +0 -46
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
- data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
- data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
@@ -63,8 +63,9 @@ bool LogEveryNSecState::ShouldLog(double seconds) {
|
|
63
63
|
// myriad2 does not have 8-byte compare and exchange. Use a racy version that
|
64
64
|
// is "good enough" but will over-log in the face of concurrent logging.
|
65
65
|
if (now_cycles > next_cycles) {
|
66
|
-
next_log_time_cycles_.store(
|
67
|
-
|
66
|
+
next_log_time_cycles_.store(
|
67
|
+
static_cast<int64_t>(now_cycles + seconds * CycleClock::Frequency()),
|
68
|
+
std::memory_order_relaxed);
|
68
69
|
return true;
|
69
70
|
}
|
70
71
|
return false;
|
@@ -72,7 +73,8 @@ bool LogEveryNSecState::ShouldLog(double seconds) {
|
|
72
73
|
do {
|
73
74
|
if (now_cycles <= next_cycles) return false;
|
74
75
|
} while (!next_log_time_cycles_.compare_exchange_weak(
|
75
|
-
next_cycles,
|
76
|
+
next_cycles,
|
77
|
+
static_cast<int64_t>(now_cycles + seconds * CycleClock::Frequency()),
|
76
78
|
std::memory_order_relaxed, std::memory_order_relaxed));
|
77
79
|
return true;
|
78
80
|
#endif
|
@@ -65,7 +65,7 @@
|
|
65
65
|
switch (0) \
|
66
66
|
case 0: \
|
67
67
|
default: \
|
68
|
-
!(condition) ? (void)0 : ::absl::log_internal::Voidify()&&
|
68
|
+
!(condition) ? (void)0 : ::absl::log_internal::Voidify() &&
|
69
69
|
|
70
70
|
// `ABSL_LOG_INTERNAL_STATEFUL_CONDITION` applies a condition like
|
71
71
|
// `ABSL_LOG_INTERNAL_STATELESS_CONDITION` but adds to that a series of variable
|
@@ -96,7 +96,8 @@
|
|
96
96
|
for (const uint32_t COUNTER ABSL_ATTRIBUTE_UNUSED = \
|
97
97
|
absl_log_internal_stateful_condition_state.counter(); \
|
98
98
|
absl_log_internal_stateful_condition_do_log; \
|
99
|
-
absl_log_internal_stateful_condition_do_log = false)
|
99
|
+
absl_log_internal_stateful_condition_do_log = false) \
|
100
|
+
::absl::log_internal::Voidify() &&
|
100
101
|
|
101
102
|
// `ABSL_LOG_INTERNAL_CONDITION_*` serve to combine any conditions from the
|
102
103
|
// macro (e.g. `LOG_IF` or `VLOG`) with inherent conditions (e.g.
|
@@ -117,6 +118,8 @@
|
|
117
118
|
ABSL_LOG_INTERNAL_##type##_CONDITION( \
|
118
119
|
(condition) && ::absl::LogSeverity::kError >= \
|
119
120
|
static_cast<::absl::LogSeverity>(ABSL_MIN_LOG_LEVEL))
|
121
|
+
#define ABSL_LOG_INTERNAL_CONDITION_DO_NOT_SUBMIT(type, condition) \
|
122
|
+
ABSL_LOG_INTERNAL_CONDITION_ERROR(type, condition)
|
120
123
|
// NOTE: Use ternary operators instead of short-circuiting to mitigate
|
121
124
|
// https://bugs.llvm.org/show_bug.cgi?id=51928.
|
122
125
|
#define ABSL_LOG_INTERNAL_CONDITION_FATAL(type, condition) \
|
@@ -168,6 +171,8 @@
|
|
168
171
|
ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
|
169
172
|
#define ABSL_LOG_INTERNAL_CONDITION_ERROR(type, condition) \
|
170
173
|
ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
|
174
|
+
#define ABSL_LOG_INTERNAL_CONDITION_DO_NOT_SUBMIT(type, condition) \
|
175
|
+
ABSL_LOG_INTERNAL_CONDITION_ERROR(type, condition)
|
171
176
|
#define ABSL_LOG_INTERNAL_CONDITION_FATAL(type, condition) \
|
172
177
|
ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
|
173
178
|
#define ABSL_LOG_INTERNAL_CONDITION_QFATAL(type, condition) \
|
@@ -31,6 +31,7 @@
|
|
31
31
|
#include <memory>
|
32
32
|
#include <ostream>
|
33
33
|
#include <string>
|
34
|
+
#include <string_view>
|
34
35
|
#include <tuple>
|
35
36
|
|
36
37
|
#include "absl/base/attributes.h"
|
@@ -47,12 +48,14 @@
|
|
47
48
|
#include "absl/log/internal/globals.h"
|
48
49
|
#include "absl/log/internal/log_format.h"
|
49
50
|
#include "absl/log/internal/log_sink_set.h"
|
51
|
+
#include "absl/log/internal/nullguard.h"
|
50
52
|
#include "absl/log/internal/proto.h"
|
51
53
|
#include "absl/log/internal/structured_proto.h"
|
52
54
|
#include "absl/log/log_entry.h"
|
53
55
|
#include "absl/log/log_sink.h"
|
54
56
|
#include "absl/log/log_sink_registry.h"
|
55
57
|
#include "absl/memory/memory.h"
|
58
|
+
#include "absl/strings/internal/utf8.h"
|
56
59
|
#include "absl/strings/string_view.h"
|
57
60
|
#include "absl/time/clock.h"
|
58
61
|
#include "absl/time/time.h"
|
@@ -147,7 +150,7 @@ void WriteToStream(const char* data, void* os) {
|
|
147
150
|
} // namespace
|
148
151
|
|
149
152
|
struct LogMessage::LogMessageData final {
|
150
|
-
LogMessageData(
|
153
|
+
LogMessageData(const char* absl_nonnull file, int line,
|
151
154
|
absl::LogSeverity severity, absl::Time timestamp);
|
152
155
|
LogMessageData(const LogMessageData&) = delete;
|
153
156
|
LogMessageData& operator=(const LogMessageData&) = delete;
|
@@ -163,7 +166,7 @@ struct LogMessage::LogMessageData final {
|
|
163
166
|
bool is_perror;
|
164
167
|
|
165
168
|
// Extra `LogSink`s to log to, in addition to `global_sinks`.
|
166
|
-
absl::InlinedVector<absl::
|
169
|
+
absl::InlinedVector<absl::LogSink* absl_nonnull, 16> extra_sinks;
|
167
170
|
// If true, log to `extra_sinks` but not to `global_sinks` or hardcoded
|
168
171
|
// non-sink targets (e.g. stderr, log files).
|
169
172
|
bool extra_sinks_only;
|
@@ -199,7 +202,7 @@ struct LogMessage::LogMessageData final {
|
|
199
202
|
void FinalizeEncodingAndFormat();
|
200
203
|
};
|
201
204
|
|
202
|
-
LogMessage::LogMessageData::LogMessageData(
|
205
|
+
LogMessage::LogMessageData::LogMessageData(const char* absl_nonnull file,
|
203
206
|
int line, absl::LogSeverity severity,
|
204
207
|
absl::Time timestamp)
|
205
208
|
: extra_sinks_only(false), manipulated(nullptr) {
|
@@ -270,7 +273,7 @@ void LogMessage::LogMessageData::FinalizeEncodingAndFormat() {
|
|
270
273
|
absl::MakeSpan(string_buf).subspan(0, chars_written);
|
271
274
|
}
|
272
275
|
|
273
|
-
LogMessage::LogMessage(
|
276
|
+
LogMessage::LogMessage(const char* absl_nonnull file, int line,
|
274
277
|
absl::LogSeverity severity)
|
275
278
|
: data_(absl::make_unique<LogMessageData>(file, line, severity,
|
276
279
|
absl::Now())) {
|
@@ -284,23 +287,15 @@ LogMessage::LogMessage(absl::Nonnull<const char*> file, int line,
|
|
284
287
|
LogBacktraceIfNeeded();
|
285
288
|
}
|
286
289
|
|
287
|
-
LogMessage::LogMessage(
|
290
|
+
LogMessage::LogMessage(const char* absl_nonnull file, int line, InfoTag)
|
288
291
|
: LogMessage(file, line, absl::LogSeverity::kInfo) {}
|
289
|
-
LogMessage::LogMessage(
|
292
|
+
LogMessage::LogMessage(const char* absl_nonnull file, int line, WarningTag)
|
290
293
|
: LogMessage(file, line, absl::LogSeverity::kWarning) {}
|
291
|
-
LogMessage::LogMessage(
|
294
|
+
LogMessage::LogMessage(const char* absl_nonnull file, int line, ErrorTag)
|
292
295
|
: LogMessage(file, line, absl::LogSeverity::kError) {}
|
293
296
|
|
294
|
-
|
295
|
-
|
296
|
-
if (data_->entry.log_severity() <
|
297
|
-
static_cast<absl::LogSeverity>(ABSL_MIN_LOG_LEVEL) &&
|
298
|
-
data_->entry.log_severity() < absl::LogSeverity::kFatal) {
|
299
|
-
return;
|
300
|
-
}
|
301
|
-
#endif
|
302
|
-
Flush();
|
303
|
-
}
|
297
|
+
// This cannot go in the header since LogMessageData is defined in this file.
|
298
|
+
LogMessage::~LogMessage() = default;
|
304
299
|
|
305
300
|
LogMessage& LogMessage::AtLocation(absl::string_view file, int line) {
|
306
301
|
data_->entry.full_filename_ = file;
|
@@ -351,13 +346,13 @@ LogMessage& LogMessage::WithPerror() {
|
|
351
346
|
return *this;
|
352
347
|
}
|
353
348
|
|
354
|
-
LogMessage& LogMessage::ToSinkAlso(absl::
|
349
|
+
LogMessage& LogMessage::ToSinkAlso(absl::LogSink* absl_nonnull sink) {
|
355
350
|
ABSL_INTERNAL_CHECK(sink, "null LogSink*");
|
356
351
|
data_->extra_sinks.push_back(sink);
|
357
352
|
return *this;
|
358
353
|
}
|
359
354
|
|
360
|
-
LogMessage& LogMessage::ToSinkOnly(absl::
|
355
|
+
LogMessage& LogMessage::ToSinkOnly(absl::LogSink* absl_nonnull sink) {
|
361
356
|
ABSL_INTERNAL_CHECK(sink, "null LogSink*");
|
362
357
|
data_->extra_sinks.clear();
|
363
358
|
data_->extra_sinks.push_back(sink);
|
@@ -411,6 +406,34 @@ LogMessage& LogMessage::operator<<(absl::string_view v) {
|
|
411
406
|
CopyToEncodedBuffer<StringType::kNotLiteral>(v);
|
412
407
|
return *this;
|
413
408
|
}
|
409
|
+
|
410
|
+
LogMessage& LogMessage::operator<<(const std::wstring& v) {
|
411
|
+
CopyToEncodedBuffer<StringType::kNotLiteral>(v);
|
412
|
+
return *this;
|
413
|
+
}
|
414
|
+
|
415
|
+
LogMessage& LogMessage::operator<<(std::wstring_view v) {
|
416
|
+
CopyToEncodedBuffer<StringType::kNotLiteral>(v);
|
417
|
+
return *this;
|
418
|
+
}
|
419
|
+
|
420
|
+
template <>
|
421
|
+
LogMessage& LogMessage::operator<< <const wchar_t*>(
|
422
|
+
const wchar_t* absl_nullable const& v) {
|
423
|
+
if (v == nullptr) {
|
424
|
+
CopyToEncodedBuffer<StringType::kNotLiteral>(
|
425
|
+
absl::string_view(kCharNull.data(), kCharNull.size() - 1));
|
426
|
+
} else {
|
427
|
+
CopyToEncodedBuffer<StringType::kNotLiteral>(v);
|
428
|
+
}
|
429
|
+
return *this;
|
430
|
+
}
|
431
|
+
|
432
|
+
LogMessage& LogMessage::operator<<(wchar_t v) {
|
433
|
+
CopyToEncodedBuffer<StringType::kNotLiteral>(std::wstring_view(&v, 1));
|
434
|
+
return *this;
|
435
|
+
}
|
436
|
+
|
414
437
|
LogMessage& LogMessage::operator<<(std::ostream& (*m)(std::ostream& os)) {
|
415
438
|
OstreamView view(*data_);
|
416
439
|
data_->manipulated << m;
|
@@ -633,6 +656,37 @@ template void LogMessage::CopyToEncodedBuffer<LogMessage::StringType::kLiteral>(
|
|
633
656
|
template void LogMessage::CopyToEncodedBuffer<
|
634
657
|
LogMessage::StringType::kNotLiteral>(char ch, size_t num);
|
635
658
|
|
659
|
+
template <LogMessage::StringType str_type>
|
660
|
+
void LogMessage::CopyToEncodedBuffer(std::wstring_view str) {
|
661
|
+
auto encoded_remaining_copy = data_->encoded_remaining();
|
662
|
+
constexpr uint8_t tag_value = str_type == StringType::kLiteral
|
663
|
+
? ValueTag::kStringLiteral
|
664
|
+
: ValueTag::kString;
|
665
|
+
size_t max_str_byte_length =
|
666
|
+
absl::strings_internal::kMaxEncodedUTF8Size * str.length();
|
667
|
+
auto value_start =
|
668
|
+
EncodeMessageStart(EventTag::kValue,
|
669
|
+
BufferSizeFor(tag_value, WireType::kLengthDelimited) +
|
670
|
+
max_str_byte_length,
|
671
|
+
&encoded_remaining_copy);
|
672
|
+
auto str_start = EncodeMessageStart(tag_value, max_str_byte_length,
|
673
|
+
&encoded_remaining_copy);
|
674
|
+
if (str_start.data()) {
|
675
|
+
log_internal::AppendTruncated(str, encoded_remaining_copy);
|
676
|
+
EncodeMessageLength(str_start, &encoded_remaining_copy);
|
677
|
+
EncodeMessageLength(value_start, &encoded_remaining_copy);
|
678
|
+
data_->encoded_remaining() = encoded_remaining_copy;
|
679
|
+
} else {
|
680
|
+
// The field header(s) did not fit; zero `encoded_remaining()` so we don't
|
681
|
+
// write anything else later.
|
682
|
+
data_->encoded_remaining().remove_suffix(data_->encoded_remaining().size());
|
683
|
+
}
|
684
|
+
}
|
685
|
+
template void LogMessage::CopyToEncodedBuffer<LogMessage::StringType::kLiteral>(
|
686
|
+
std::wstring_view str);
|
687
|
+
template void LogMessage::CopyToEncodedBuffer<
|
688
|
+
LogMessage::StringType::kNotLiteral>(std::wstring_view str);
|
689
|
+
|
636
690
|
template void LogMessage::CopyToEncodedBufferWithStructuredProtoField<
|
637
691
|
LogMessage::StringType::kLiteral>(StructuredProtoField field,
|
638
692
|
absl::string_view str);
|
@@ -681,57 +735,45 @@ void LogMessage::CopyToEncodedBufferWithStructuredProtoField(
|
|
681
735
|
#pragma warning(disable : 4722)
|
682
736
|
#endif
|
683
737
|
|
684
|
-
LogMessageFatal::LogMessageFatal(
|
738
|
+
LogMessageFatal::LogMessageFatal(const char* absl_nonnull file, int line)
|
685
739
|
: LogMessage(file, line, absl::LogSeverity::kFatal) {}
|
686
740
|
|
687
|
-
LogMessageFatal::LogMessageFatal(
|
688
|
-
|
741
|
+
LogMessageFatal::LogMessageFatal(const char* absl_nonnull file, int line,
|
742
|
+
const char* absl_nonnull failure_msg)
|
689
743
|
: LogMessage(file, line, absl::LogSeverity::kFatal) {
|
690
744
|
*this << "Check failed: " << failure_msg << " ";
|
691
745
|
}
|
692
746
|
|
693
|
-
LogMessageFatal::~LogMessageFatal() {
|
694
|
-
Flush();
|
695
|
-
FailWithoutStackTrace();
|
696
|
-
}
|
747
|
+
LogMessageFatal::~LogMessageFatal() { FailWithoutStackTrace(); }
|
697
748
|
|
698
|
-
LogMessageDebugFatal::LogMessageDebugFatal(
|
749
|
+
LogMessageDebugFatal::LogMessageDebugFatal(const char* absl_nonnull file,
|
699
750
|
int line)
|
700
751
|
: LogMessage(file, line, absl::LogSeverity::kFatal) {}
|
701
752
|
|
702
|
-
LogMessageDebugFatal::~LogMessageDebugFatal() {
|
703
|
-
Flush();
|
704
|
-
FailWithoutStackTrace();
|
705
|
-
}
|
753
|
+
LogMessageDebugFatal::~LogMessageDebugFatal() { FailWithoutStackTrace(); }
|
706
754
|
|
707
755
|
LogMessageQuietlyDebugFatal::LogMessageQuietlyDebugFatal(
|
708
|
-
|
756
|
+
const char* absl_nonnull file, int line)
|
709
757
|
: LogMessage(file, line, absl::LogSeverity::kFatal) {
|
710
758
|
SetFailQuietly();
|
711
759
|
}
|
712
760
|
|
713
|
-
LogMessageQuietlyDebugFatal::~LogMessageQuietlyDebugFatal() {
|
714
|
-
Flush();
|
715
|
-
FailQuietly();
|
716
|
-
}
|
761
|
+
LogMessageQuietlyDebugFatal::~LogMessageQuietlyDebugFatal() { FailQuietly(); }
|
717
762
|
|
718
|
-
LogMessageQuietlyFatal::LogMessageQuietlyFatal(
|
763
|
+
LogMessageQuietlyFatal::LogMessageQuietlyFatal(const char* absl_nonnull file,
|
719
764
|
int line)
|
720
765
|
: LogMessage(file, line, absl::LogSeverity::kFatal) {
|
721
766
|
SetFailQuietly();
|
722
767
|
}
|
723
768
|
|
724
769
|
LogMessageQuietlyFatal::LogMessageQuietlyFatal(
|
725
|
-
|
726
|
-
|
770
|
+
const char* absl_nonnull file, int line,
|
771
|
+
const char* absl_nonnull failure_msg)
|
727
772
|
: LogMessageQuietlyFatal(file, line) {
|
728
773
|
*this << "Check failed: " << failure_msg << " ";
|
729
774
|
}
|
730
775
|
|
731
|
-
LogMessageQuietlyFatal::~LogMessageQuietlyFatal() {
|
732
|
-
Flush();
|
733
|
-
FailQuietly();
|
734
|
-
}
|
776
|
+
LogMessageQuietlyFatal::~LogMessageQuietlyFatal() { FailQuietly(); }
|
735
777
|
#if defined(_MSC_VER) && !defined(__clang__)
|
736
778
|
#pragma warning(pop)
|
737
779
|
#endif
|
@@ -17,22 +17,25 @@
|
|
17
17
|
// -----------------------------------------------------------------------------
|
18
18
|
//
|
19
19
|
// This file declares `class absl::log_internal::LogMessage`. This class more or
|
20
|
-
// less represents a particular log message. LOG/CHECK macros create a
|
21
|
-
//
|
22
|
-
//
|
23
|
-
//
|
24
|
-
//
|
25
|
-
//
|
20
|
+
// less represents a particular log message. LOG/CHECK macros create a temporary
|
21
|
+
// instance of `LogMessage` and then stream values to it. At the end of the
|
22
|
+
// LOG/CHECK statement, the LogMessage is voidified by operator&&, and `Flush()`
|
23
|
+
// directs the message to the registered log sinks. Heap-allocation of
|
24
|
+
// `LogMessage` is unsupported. Construction outside of a `LOG` macro is
|
25
|
+
// unsupported.
|
26
26
|
|
27
27
|
#ifndef ABSL_LOG_INTERNAL_LOG_MESSAGE_H_
|
28
28
|
#define ABSL_LOG_INTERNAL_LOG_MESSAGE_H_
|
29
29
|
|
30
|
+
#include <wchar.h>
|
31
|
+
|
30
32
|
#include <cstddef>
|
31
33
|
#include <ios>
|
32
34
|
#include <memory>
|
33
35
|
#include <ostream>
|
34
36
|
#include <streambuf>
|
35
37
|
#include <string>
|
38
|
+
#include <string_view>
|
36
39
|
#include <type_traits>
|
37
40
|
|
38
41
|
#include "absl/base/attributes.h"
|
@@ -62,15 +65,15 @@ class LogMessage {
|
|
62
65
|
struct ErrorTag {};
|
63
66
|
|
64
67
|
// Used for `LOG`.
|
65
|
-
LogMessage(
|
68
|
+
LogMessage(const char* absl_nonnull file, int line,
|
66
69
|
absl::LogSeverity severity) ABSL_ATTRIBUTE_COLD;
|
67
70
|
// These constructors are slightly smaller/faster to call; the severity is
|
68
71
|
// curried into the function pointer.
|
69
|
-
LogMessage(
|
72
|
+
LogMessage(const char* absl_nonnull file, int line,
|
70
73
|
InfoTag) ABSL_ATTRIBUTE_COLD ABSL_ATTRIBUTE_NOINLINE;
|
71
|
-
LogMessage(
|
74
|
+
LogMessage(const char* absl_nonnull file, int line,
|
72
75
|
WarningTag) ABSL_ATTRIBUTE_COLD ABSL_ATTRIBUTE_NOINLINE;
|
73
|
-
LogMessage(
|
76
|
+
LogMessage(const char* absl_nonnull file, int line,
|
74
77
|
ErrorTag) ABSL_ATTRIBUTE_COLD ABSL_ATTRIBUTE_NOINLINE;
|
75
78
|
LogMessage(const LogMessage&) = delete;
|
76
79
|
LogMessage& operator=(const LogMessage&) = delete;
|
@@ -102,9 +105,9 @@ class LogMessage {
|
|
102
105
|
LogMessage& WithPerror();
|
103
106
|
// Sends this message to `*sink` in addition to whatever other sinks it would
|
104
107
|
// otherwise have been sent to.
|
105
|
-
LogMessage& ToSinkAlso(absl::
|
108
|
+
LogMessage& ToSinkAlso(absl::LogSink* absl_nonnull sink);
|
106
109
|
// Sends this message to `*sink` and no others.
|
107
|
-
LogMessage& ToSinkOnly(absl::
|
110
|
+
LogMessage& ToSinkOnly(absl::LogSink* absl_nonnull sink);
|
108
111
|
|
109
112
|
// Don't call this method from outside this library.
|
110
113
|
LogMessage& InternalStream() { return *this; }
|
@@ -141,10 +144,10 @@ class LogMessage {
|
|
141
144
|
LogMessage& operator<<(unsigned long long v) {
|
142
145
|
return operator<< <unsigned long long>(v);
|
143
146
|
}
|
144
|
-
LogMessage& operator<<(
|
147
|
+
LogMessage& operator<<(void* absl_nullable v) {
|
145
148
|
return operator<< <void*>(v);
|
146
149
|
}
|
147
|
-
LogMessage& operator<<(
|
150
|
+
LogMessage& operator<<(const void* absl_nullable v) {
|
148
151
|
return operator<< <const void*>(v);
|
149
152
|
}
|
150
153
|
LogMessage& operator<<(float v) { return operator<< <float>(v); }
|
@@ -158,10 +161,16 @@ class LogMessage {
|
|
158
161
|
LogMessage& operator<<(const std::string& v);
|
159
162
|
LogMessage& operator<<(absl::string_view v);
|
160
163
|
|
164
|
+
// Wide string overloads (since std::ostream does not provide them).
|
165
|
+
LogMessage& operator<<(const std::wstring& v);
|
166
|
+
LogMessage& operator<<(std::wstring_view v);
|
167
|
+
// `const wchar_t*` is handled by `operator<< <const wchar_t*>`.
|
168
|
+
LogMessage& operator<<(wchar_t* absl_nullable v);
|
169
|
+
LogMessage& operator<<(wchar_t v);
|
170
|
+
|
161
171
|
// Handle stream manipulators e.g. std::endl.
|
162
|
-
LogMessage& operator<<(
|
163
|
-
LogMessage& operator<<(
|
164
|
-
absl::Nonnull<std::ios_base& (*)(std::ios_base & os)> m);
|
172
|
+
LogMessage& operator<<(std::ostream& (*absl_nonnull m)(std::ostream& os));
|
173
|
+
LogMessage& operator<<(std::ios_base& (*absl_nonnull m)(std::ios_base& os));
|
165
174
|
|
166
175
|
// Literal strings. This allows us to record C string literals as literals in
|
167
176
|
// the logging.proto.Value.
|
@@ -170,31 +179,30 @@ class LogMessage {
|
|
170
179
|
// this template for every value of `SIZE` encountered in each source code
|
171
180
|
// file. That significantly increases linker input sizes. Inlining is cheap
|
172
181
|
// because the argument to this overload is almost always a string literal so
|
173
|
-
// the call to `strlen` can be replaced at compile time. The
|
174
|
-
// `char[]` below should not be inlined. The compiler typically
|
175
|
-
// the string at compile time and cannot replace the call to
|
176
|
-
// inlining it increases the binary size. See the discussion on
|
182
|
+
// the call to `strlen` can be replaced at compile time. The overloads for
|
183
|
+
// `char[]`/`wchar_t[]` below should not be inlined. The compiler typically
|
184
|
+
// does not have the string at compile time and cannot replace the call to
|
185
|
+
// `strlen` so inlining it increases the binary size. See the discussion on
|
177
186
|
// cl/107527369.
|
178
187
|
template <int SIZE>
|
179
188
|
LogMessage& operator<<(const char (&buf)[SIZE]);
|
189
|
+
template <int SIZE>
|
190
|
+
LogMessage& operator<<(const wchar_t (&buf)[SIZE]);
|
180
191
|
|
181
192
|
// This prevents non-const `char[]` arrays from looking like literals.
|
182
193
|
template <int SIZE>
|
183
194
|
LogMessage& operator<<(char (&buf)[SIZE]) ABSL_ATTRIBUTE_NOINLINE;
|
195
|
+
// `wchar_t[SIZE]` is handled by `operator<< <const wchar_t*>`.
|
184
196
|
|
185
197
|
// Types that support `AbslStringify()` are serialized that way.
|
186
|
-
template <typename T,
|
187
|
-
typename std::enable_if<absl::HasAbslStringify<T>::value,
|
188
|
-
int>::type = 0>
|
189
|
-
LogMessage& operator<<(const T& v) ABSL_ATTRIBUTE_NOINLINE;
|
190
|
-
|
191
198
|
// Types that don't support `AbslStringify()` but do support streaming into a
|
192
199
|
// `std::ostream&` are serialized that way.
|
193
|
-
template <typename T
|
194
|
-
typename std::enable_if<!absl::HasAbslStringify<T>::value,
|
195
|
-
int>::type = 0>
|
200
|
+
template <typename T>
|
196
201
|
LogMessage& operator<<(const T& v) ABSL_ATTRIBUTE_NOINLINE;
|
197
202
|
|
203
|
+
// Dispatches the completed `absl::LogEntry` to applicable `absl::LogSink`s.
|
204
|
+
void Flush();
|
205
|
+
|
198
206
|
// Note: We explicitly do not support `operator<<` for non-const references
|
199
207
|
// because it breaks logging of non-integer bitfield types (i.e., enums).
|
200
208
|
|
@@ -207,11 +215,6 @@ class LogMessage {
|
|
207
215
|
// the process with an error exit code.
|
208
216
|
[[noreturn]] static void FailQuietly();
|
209
217
|
|
210
|
-
// Dispatches the completed `absl::LogEntry` to applicable `absl::LogSink`s.
|
211
|
-
// This might as well be inlined into `~LogMessage` except that
|
212
|
-
// `~LogMessageFatal` needs to call it early.
|
213
|
-
void Flush();
|
214
|
-
|
215
218
|
// After this is called, failures are done as quiet as possible for this log
|
216
219
|
// message.
|
217
220
|
void SetFailQuietly();
|
@@ -253,6 +256,8 @@ class LogMessage {
|
|
253
256
|
void CopyToEncodedBuffer(absl::string_view str) ABSL_ATTRIBUTE_NOINLINE;
|
254
257
|
template <StringType str_type>
|
255
258
|
void CopyToEncodedBuffer(char ch, size_t num) ABSL_ATTRIBUTE_NOINLINE;
|
259
|
+
template <StringType str_type>
|
260
|
+
void CopyToEncodedBuffer(std::wstring_view str) ABSL_ATTRIBUTE_NOINLINE;
|
256
261
|
|
257
262
|
// Copies `field` to the encoded buffer, then appends `str` after it
|
258
263
|
// (truncating `str` if necessary to fit).
|
@@ -280,9 +285,25 @@ class LogMessage {
|
|
280
285
|
|
281
286
|
// We keep the data in a separate struct so that each instance of `LogMessage`
|
282
287
|
// uses less stack space.
|
283
|
-
|
288
|
+
absl_nonnull std::unique_ptr<LogMessageData> data_;
|
284
289
|
};
|
285
290
|
|
291
|
+
// Explicitly specializes the generic operator<< for `const wchar_t*`
|
292
|
+
// arguments.
|
293
|
+
//
|
294
|
+
// This method is used instead of a non-template `const wchar_t*` overload,
|
295
|
+
// as the latter was found to take precedence over the array template
|
296
|
+
// (`operator<<(const wchar_t(&)[SIZE])`) when handling string literals.
|
297
|
+
// This specialization ensures the array template now correctly processes
|
298
|
+
// literals.
|
299
|
+
template <>
|
300
|
+
LogMessage& LogMessage::operator<< <const wchar_t*>(
|
301
|
+
const wchar_t* absl_nullable const& v);
|
302
|
+
|
303
|
+
inline LogMessage& LogMessage::operator<<(wchar_t* absl_nullable v) {
|
304
|
+
return operator<<(const_cast<const wchar_t*>(v));
|
305
|
+
}
|
306
|
+
|
286
307
|
// Helper class so that `AbslStringify()` can modify the LogMessage.
|
287
308
|
class StringifySink final {
|
288
309
|
public:
|
@@ -298,7 +319,7 @@ class StringifySink final {
|
|
298
319
|
}
|
299
320
|
|
300
321
|
// For types that implement `AbslStringify` using `absl::Format()`.
|
301
|
-
friend void AbslFormatFlush(
|
322
|
+
friend void AbslFormatFlush(StringifySink* absl_nonnull sink,
|
302
323
|
absl::string_view v) {
|
303
324
|
sink->Append(v);
|
304
325
|
}
|
@@ -308,26 +329,27 @@ class StringifySink final {
|
|
308
329
|
};
|
309
330
|
|
310
331
|
// Note: the following is declared `ABSL_ATTRIBUTE_NOINLINE`
|
311
|
-
template <typename T
|
312
|
-
typename std::enable_if<absl::HasAbslStringify<T>::value, int>::type>
|
332
|
+
template <typename T>
|
313
333
|
LogMessage& LogMessage::operator<<(const T& v) {
|
314
|
-
|
315
|
-
|
316
|
-
|
334
|
+
if constexpr (absl::HasAbslStringify<T>::value) {
|
335
|
+
StringifySink sink(*this);
|
336
|
+
// Replace with public API.
|
337
|
+
AbslStringify(sink, v);
|
338
|
+
} else {
|
339
|
+
OstreamView view(*data_);
|
340
|
+
view.stream() << log_internal::NullGuard<T>().Guard(v);
|
341
|
+
}
|
317
342
|
return *this;
|
318
343
|
}
|
319
344
|
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
LogMessage& LogMessage::operator<<(const T& v) {
|
324
|
-
OstreamView view(*data_);
|
325
|
-
view.stream() << log_internal::NullGuard<T>().Guard(v);
|
345
|
+
template <int SIZE>
|
346
|
+
LogMessage& LogMessage::operator<<(const char (&buf)[SIZE]) {
|
347
|
+
CopyToEncodedBuffer<StringType::kLiteral>(buf);
|
326
348
|
return *this;
|
327
349
|
}
|
328
350
|
|
329
351
|
template <int SIZE>
|
330
|
-
LogMessage& LogMessage::operator<<(const
|
352
|
+
LogMessage& LogMessage::operator<<(const wchar_t (&buf)[SIZE]) {
|
331
353
|
CopyToEncodedBuffer<StringType::kLiteral>(buf);
|
332
354
|
return *this;
|
333
355
|
}
|
@@ -355,9 +377,9 @@ extern template LogMessage& LogMessage::operator<<(const unsigned long& v);
|
|
355
377
|
extern template LogMessage& LogMessage::operator<<(const long long& v);
|
356
378
|
extern template LogMessage& LogMessage::operator<<(const unsigned long long& v);
|
357
379
|
extern template LogMessage& LogMessage::operator<<(
|
358
|
-
|
380
|
+
void* absl_nullable const& v);
|
359
381
|
extern template LogMessage& LogMessage::operator<<(
|
360
|
-
|
382
|
+
const void* absl_nullable const& v);
|
361
383
|
extern template LogMessage& LogMessage::operator<<(const float& v);
|
362
384
|
extern template LogMessage& LogMessage::operator<<(const double& v);
|
363
385
|
extern template LogMessage& LogMessage::operator<<(const bool& v);
|
@@ -373,15 +395,18 @@ LogMessage::CopyToEncodedBuffer<LogMessage::StringType::kLiteral>(char ch,
|
|
373
395
|
size_t num);
|
374
396
|
extern template void LogMessage::CopyToEncodedBuffer<
|
375
397
|
LogMessage::StringType::kNotLiteral>(char ch, size_t num);
|
398
|
+
extern template void LogMessage::CopyToEncodedBuffer<
|
399
|
+
LogMessage::StringType::kLiteral>(std::wstring_view str);
|
400
|
+
extern template void LogMessage::CopyToEncodedBuffer<
|
401
|
+
LogMessage::StringType::kNotLiteral>(std::wstring_view str);
|
376
402
|
|
377
403
|
// `LogMessageFatal` ensures the process will exit in failure after logging this
|
378
404
|
// message.
|
379
405
|
class LogMessageFatal final : public LogMessage {
|
380
406
|
public:
|
381
|
-
LogMessageFatal(
|
382
|
-
|
383
|
-
|
384
|
-
absl::Nonnull<const char*> failure_msg) ABSL_ATTRIBUTE_COLD;
|
407
|
+
LogMessageFatal(const char* absl_nonnull file, int line) ABSL_ATTRIBUTE_COLD;
|
408
|
+
LogMessageFatal(const char* absl_nonnull file, int line,
|
409
|
+
const char* absl_nonnull failure_msg) ABSL_ATTRIBUTE_COLD;
|
385
410
|
[[noreturn]] ~LogMessageFatal();
|
386
411
|
};
|
387
412
|
|
@@ -390,7 +415,7 @@ class LogMessageFatal final : public LogMessage {
|
|
390
415
|
// for DLOG(FATAL) variants.
|
391
416
|
class LogMessageDebugFatal final : public LogMessage {
|
392
417
|
public:
|
393
|
-
LogMessageDebugFatal(
|
418
|
+
LogMessageDebugFatal(const char* absl_nonnull file,
|
394
419
|
int line) ABSL_ATTRIBUTE_COLD;
|
395
420
|
~LogMessageDebugFatal();
|
396
421
|
};
|
@@ -400,7 +425,7 @@ class LogMessageQuietlyDebugFatal final : public LogMessage {
|
|
400
425
|
// DLOG(QFATAL) calls this instead of LogMessageQuietlyFatal to make sure the
|
401
426
|
// destructor is not [[noreturn]] even if this is always FATAL as this is only
|
402
427
|
// invoked when DLOG() is enabled.
|
403
|
-
LogMessageQuietlyDebugFatal(
|
428
|
+
LogMessageQuietlyDebugFatal(const char* absl_nonnull file,
|
404
429
|
int line) ABSL_ATTRIBUTE_COLD;
|
405
430
|
~LogMessageQuietlyDebugFatal();
|
406
431
|
};
|
@@ -408,10 +433,10 @@ class LogMessageQuietlyDebugFatal final : public LogMessage {
|
|
408
433
|
// Used for LOG(QFATAL) to make sure it's properly understood as [[noreturn]].
|
409
434
|
class LogMessageQuietlyFatal final : public LogMessage {
|
410
435
|
public:
|
411
|
-
LogMessageQuietlyFatal(
|
436
|
+
LogMessageQuietlyFatal(const char* absl_nonnull file,
|
412
437
|
int line) ABSL_ATTRIBUTE_COLD;
|
413
|
-
LogMessageQuietlyFatal(
|
414
|
-
|
438
|
+
LogMessageQuietlyFatal(const char* absl_nonnull file, int line,
|
439
|
+
const char* absl_nonnull failure_msg)
|
415
440
|
ABSL_ATTRIBUTE_COLD;
|
416
441
|
[[noreturn]] ~LogMessageQuietlyFatal();
|
417
442
|
};
|
@@ -123,8 +123,9 @@ bool EncodeBytesTruncate(uint64_t tag, absl::Span<const char> value,
|
|
123
123
|
return true;
|
124
124
|
}
|
125
125
|
|
126
|
-
|
127
|
-
|
126
|
+
[[nodiscard]] absl::Span<char> EncodeMessageStart(uint64_t tag,
|
127
|
+
uint64_t max_size,
|
128
|
+
absl::Span<char> *buf) {
|
128
129
|
const uint64_t tag_type = MakeTagType(tag, WireType::kLengthDelimited);
|
129
130
|
const size_t tag_type_size = VarintSize(tag_type);
|
130
131
|
max_size = std::min<uint64_t>(max_size, buf->size());
|
@@ -169,9 +169,9 @@ inline bool EncodeStringTruncate(uint64_t tag, absl::string_view value,
|
|
169
169
|
// safe to pass to `EncodeMessageLength` but need not be.
|
170
170
|
// Used for string, bytes, message, and packed-repeated field type.
|
171
171
|
// Consumes up to kMaxVarintSize * 2 bytes (20).
|
172
|
-
|
173
|
-
|
174
|
-
|
172
|
+
[[nodiscard]] absl::Span<char> EncodeMessageStart(uint64_t tag,
|
173
|
+
uint64_t max_size,
|
174
|
+
absl::Span<char> *buf);
|
175
175
|
|
176
176
|
// Finalizes the length field in `msg` so that it encompasses all data encoded
|
177
177
|
// since the call to `EncodeMessageStart` which returned `msg`. Does nothing if
|