Lift QuicByteCount and QuicEcnCodepoint into a new quiche/common/quiche_types.h. Aliases to the new types are added in quic/core/quic_types.h for convenience, but their uses in quiche/common/... are switched to the new types. Other misc IWYU changes were made, which I tried to keep to a minimum and warrant additional cleanup later. PiperOrigin-RevId: 987557606
diff --git a/build/source_list.bzl b/build/source_list.bzl index 5a39141..dd72020 100644 --- a/build/source_list.bzl +++ b/build/source_list.bzl
@@ -65,6 +65,7 @@ "common/quiche_status_utils.h", "common/quiche_string_tuple.h", "common/quiche_text_utils.h", + "common/quiche_types.h", "common/quiche_weak_ptr.h", "common/simple_buffer_allocator.h", "common/stable_block_list.h",
diff --git a/build/source_list.gni b/build/source_list.gni index db07e97..7640e1a 100644 --- a/build/source_list.gni +++ b/build/source_list.gni
@@ -65,6 +65,7 @@ "src/quiche/common/quiche_status_utils.h", "src/quiche/common/quiche_string_tuple.h", "src/quiche/common/quiche_text_utils.h", + "src/quiche/common/quiche_types.h", "src/quiche/common/quiche_weak_ptr.h", "src/quiche/common/simple_buffer_allocator.h", "src/quiche/common/stable_block_list.h",
diff --git a/build/source_list.json b/build/source_list.json index f9e60cf..4596010 100644 --- a/build/source_list.json +++ b/build/source_list.json
@@ -64,6 +64,7 @@ "quiche/common/quiche_status_utils.h", "quiche/common/quiche_string_tuple.h", "quiche/common/quiche_text_utils.h", + "quiche/common/quiche_types.h", "quiche/common/quiche_weak_ptr.h", "quiche/common/simple_buffer_allocator.h", "quiche/common/stable_block_list.h",
diff --git a/quiche/common/platform/api/quiche_udp_socket_platform_api.h b/quiche/common/platform/api/quiche_udp_socket_platform_api.h index fd93e0d..518fc36 100644 --- a/quiche/common/platform/api/quiche_udp_socket_platform_api.h +++ b/quiche/common/platform/api/quiche_udp_socket_platform_api.h
@@ -5,10 +5,13 @@ #ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_UDP_SOCKET_PLATFORM_API_H_ #define QUICHE_COMMON_PLATFORM_API_QUICHE_UDP_SOCKET_PLATFORM_API_H_ +#include <cstddef> +#include <cstdint> + #include "quiche_platform_impl/quiche_udp_socket_platform_impl.h" -#include "quiche/quic/core/quic_types.h" #include "quiche/common/quiche_ip_address_family.h" +#include "quiche/common/quiche_types.h" namespace quiche { @@ -35,7 +38,7 @@ // associated error code. inline int GetEcnCmsgArgsPreserveDscp( const int fd, const quiche::IpAddressFamily address_family, - quic::QuicEcnCodepoint ecn_codepoint, int& type, void* value, + QuicheEcnCodepoint ecn_codepoint, int& type, void* value, socklen_t& value_len) { return GetEcnCmsgArgsPreserveDscpImpl( fd, ToPlatformAddressFamily(address_family),
diff --git a/quiche/common/quiche_mem_slice_storage.cc b/quiche/common/quiche_mem_slice_storage.cc index 4a118e5..3921eb8 100644 --- a/quiche/common/quiche_mem_slice_storage.cc +++ b/quiche/common/quiche_mem_slice_storage.cc
@@ -5,19 +5,23 @@ #include "quiche/common/quiche_mem_slice_storage.h" #include <algorithm> +#include <cstddef> #include <utility> -#include "quiche/quic/core/quic_utils.h" +#include "quiche/common/platform/api/quiche_logging.h" +#include "quiche/common/quiche_buffer_allocator.h" +#include "quiche/common/quiche_mem_slice.h" +#include "quiche/common/quiche_types.h" namespace quiche { QuicheMemSliceStorage::QuicheMemSliceStorage( const struct iovec* iov, int iov_count, QuicheBufferAllocator* allocator, - const quic::QuicByteCount max_slice_len) { + const QuicheByteCount max_slice_len) { if (iov == nullptr) { return; } - quic::QuicByteCount write_len = 0; + QuicheByteCount write_len = 0; for (int i = 0; i < iov_count; ++i) { write_len += iov[i].iov_len; }
diff --git a/quiche/common/quiche_mem_slice_storage.h b/quiche/common/quiche_mem_slice_storage.h index f3b0285..3e7410b 100644 --- a/quiche/common/quiche_mem_slice_storage.h +++ b/quiche/common/quiche_mem_slice_storage.h
@@ -8,11 +8,11 @@ #include <vector> #include "absl/types/span.h" -#include "quiche/quic/core/quic_types.h" #include "quiche/common/platform/api/quiche_export.h" -#include "quiche/common/platform/api/quiche_iovec.h" +#include "quiche/common/platform/api/quiche_iovec.h" // IWYU pragma: keep for iovec #include "quiche/common/quiche_buffer_allocator.h" #include "quiche/common/quiche_mem_slice.h" +#include "quiche/common/quiche_types.h" namespace quiche { @@ -22,7 +22,7 @@ public: QuicheMemSliceStorage(const struct iovec* iov, int iov_count, QuicheBufferAllocator* allocator, - const quic::QuicByteCount max_slice_len); + QuicheByteCount max_slice_len); QuicheMemSliceStorage(const QuicheMemSliceStorage& other) = delete; QuicheMemSliceStorage& operator=(const QuicheMemSliceStorage& other) = delete;
diff --git a/quiche/common/quiche_types.h b/quiche/common/quiche_types.h new file mode 100644 index 0000000..bf2a14c --- /dev/null +++ b/quiche/common/quiche_types.h
@@ -0,0 +1,32 @@ +// Copyright 2026 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef QUICHE_COMMON_QUICHE_TYPES_H_ +#define QUICHE_COMMON_QUICHE_TYPES_H_ + +#include <cstdint> + +namespace quiche { + +using QuicheByteCount = uint64_t; + +// The two bits in the IP header for Explicit Congestion Notification can take +// one of four values. +enum QuicheEcnCodepoint : uint8_t { + // The NOT-ECT codepoint, indicating the packet sender is not using (or the + // network has disabled) ECN. + ECN_NOT_ECT = 0, + // The ECT(1) codepoint, indicating the packet sender is using Low Latency, + // Low Loss, Scalable Throughput (L4S) ECN (RFC9330). + ECN_ECT1 = 1, + // The ECT(0) codepoint, indicating the packet sender is using classic ECN + // (RFC3168). + ECN_ECT0 = 2, + // The CE ("Congestion Experienced") codepoint, indicating the packet sender + // is using ECN, and a router is experiencing congestion. + ECN_CE = 3, +}; +} // namespace quiche + +#endif // QUICHE_COMMON_QUICHE_TYPES_H_
diff --git a/quiche/quic/core/quic_types.h b/quiche/quic/core/quic_types.h index d944929..e1fe120 100644 --- a/quiche/quic/core/quic_types.h +++ b/quiche/quic/core/quic_types.h
@@ -19,12 +19,13 @@ #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" #include "openssl/ssl.h" -#include "quiche/quic/core/quic_connection_id.h" -#include "quiche/quic/core/quic_error_codes.h" +#include "quiche/quic/core/quic_connection_id.h" // IWYU pragma: export +#include "quiche/quic/core/quic_error_codes.h" // IWYU pragma: export #include "quiche/quic/core/quic_packet_number.h" #include "quiche/quic/core/quic_time.h" -#include "quiche/quic/platform/api/quic_flags.h" +#include "quiche/quic/platform/api/quic_flags.h" // IWYU pragma: export #include "quiche/common/platform/api/quiche_export.h" +#include "quiche/common/quiche_types.h" #include "quiche/web_transport/web_transport.h" namespace quic { @@ -43,7 +44,7 @@ // Count of stream IDs. Used in MAX_STREAMS and STREAMS_BLOCKED frames. using QuicStreamCount = QuicStreamId; -using QuicByteCount = uint64_t; +using QuicByteCount = quiche::QuicheByteCount; using QuicPacketCount = uint64_t; using QuicPublicResetNonceProof = uint64_t; using QuicStreamOffset = uint64_t; @@ -969,22 +970,11 @@ QUICHE_EXPORT std::ostream& operator<<(std::ostream& os, const ParsedClientHello& parsed_chlo); -// The two bits in the IP header for Explicit Congestion Notification can take -// one of four values. -enum QuicEcnCodepoint : uint8_t { - // The NOT-ECT codepoint, indicating the packet sender is not using (or the - // network has disabled) ECN. - ECN_NOT_ECT = 0, - // The ECT(1) codepoint, indicating the packet sender is using Low Latency, - // Low Loss, Scalable Throughput (L4S) ECN (RFC9330). - ECN_ECT1 = 1, - // The ECT(0) codepoint, indicating the packet sender is using classic ECN - // (RFC3168). - ECN_ECT0 = 2, - // The CE ("Congestion Experienced") codepoint, indicating the packet sender - // is using ECN, and a router is experiencing congestion. - ECN_CE = 3, -}; +using QuicEcnCodepoint = quiche::QuicheEcnCodepoint; +using quiche::ECN_CE; +using quiche::ECN_ECT0; +using quiche::ECN_ECT1; +using quiche::ECN_NOT_ECT; QUICHE_EXPORT std::string EcnCodepointToString(QuicEcnCodepoint ecn);