#ifndef QUICHE_QUIC_CORE_QUIC_TYPES_H_
#define QUICHE_QUIC_CORE_QUIC_TYPES_H_
#include <array>
#include <cstddef>
#include <cstdint>
#include <map>
#include <optional>
#include <ostream>
#include <vector>
#include "absl/container/inlined_vector.h"
#include "absl/strings/str_format.h"
#include "absl/strings/string_view.h"
#include "quiche/quic/core/quic_connection_id.h"
#include "quiche/quic/core/quic_error_codes.h"
#include "quiche/quic/core/quic_packet_number.h"
#include "quiche/quic/core/quic_time.h"
#include "quiche/quic/platform/api/quic_export.h"
#include "quiche/quic/platform/api/quic_flags.h"
#include "quiche/common/quiche_endian.h"
#include "quiche/web_transport/web_transport.h"
namespace quic {
QuicPacketLength;
QuicControlFrameId;
QuicMessageId;
QuicStreamId;
QuicStreamCount;
QuicByteCount;
QuicPacketCount;
QuicPublicResetNonceProof;
QuicStreamOffset;
DiversificationNonce;
PacketTimeVector;
enum : size_t { … };
StatelessResetToken;
WebTransportSessionId;
WebTransportStreamError;
WebTransportSessionError;
enum : size_t { … };
QuicPathFrameBuffer;
QuicConnectionIdSequenceNumber;
ApplicationState;
struct QUICHE_EXPORT QuicConsumedData { … };
enum QuicAsyncStatus { … };
enum WriteStatus : int16_t { … };
std::string HistogramEnumString(WriteStatus enum_value);
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
const WriteStatus& status);
inline std::string HistogramEnumDescription(WriteStatus ) { … }
inline bool IsWriteBlockedStatus(WriteStatus status) { … }
inline bool IsWriteError(WriteStatus status) { … }
struct QUICHE_EXPORT WriteResult { … };
enum TransmissionType : int8_t { … };
QUICHE_EXPORT std::string TransmissionTypeToString(
TransmissionType transmission_type);
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
TransmissionType transmission_type);
enum HasRetransmittableData : uint8_t { … };
enum IsHandshake : uint8_t { … };
enum class Perspective : uint8_t { … };
QUICHE_EXPORT std::string PerspectiveToString(Perspective perspective);
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
const Perspective& perspective);
enum class ConnectionCloseSource { … };
QUICHE_EXPORT std::string ConnectionCloseSourceToString(
ConnectionCloseSource connection_close_source);
QUICHE_EXPORT std::ostream& operator<<(
std::ostream& os, const ConnectionCloseSource& connection_close_source);
enum class ConnectionCloseBehavior { … };
QUICHE_EXPORT std::string ConnectionCloseBehaviorToString(
ConnectionCloseBehavior connection_close_behavior);
QUICHE_EXPORT std::ostream& operator<<(
std::ostream& os, const ConnectionCloseBehavior& connection_close_behavior);
enum QuicFrameType : uint8_t { … };
QUICHE_EXPORT std::string QuicFrameTypeToString(QuicFrameType t);
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
const QuicFrameType& t);
enum QuicIetfFrameType : uint64_t { … };
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
const QuicIetfFrameType& c);
QUICHE_EXPORT std::string QuicIetfFrameTypeString(QuicIetfFrameType t);
#define IETF_STREAM_FRAME_TYPE_MASK …
#define IETF_STREAM_FRAME_FLAG_MASK …
#define IS_IETF_STREAM_FRAME(_stype_) …
#define IETF_STREAM_FRAME_FIN_BIT …
#define IETF_STREAM_FRAME_LEN_BIT …
#define IETF_STREAM_FRAME_OFF_BIT …
enum QuicPacketNumberLength : uint8_t { … };
enum QuicPacketNumberLengthFlags { … };
enum QuicPacketPublicFlags { … };
enum QuicPacketPrivateFlags { … };
enum CongestionControlType { … };
QUICHE_EXPORT std::string CongestionControlTypeToString(
CongestionControlType cc_type);
enum EncryptionLevel : int8_t { … };
inline bool EncryptionLevelIsValid(EncryptionLevel level) { … }
QUICHE_EXPORT std::string EncryptionLevelToString(EncryptionLevel level);
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os, EncryptionLevel level);
enum class ClientCertMode : uint8_t { … };
QUICHE_EXPORT absl::string_view ClientCertModeToString(ClientCertMode mode);
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os, ClientCertMode mode);
enum AddressChangeType : uint8_t { … };
QUICHE_EXPORT std::string AddressChangeTypeToString(AddressChangeType type);
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
AddressChangeType type);
enum StreamSendingState { … };
enum SentPacketState : uint8_t { … };
enum PacketHeaderFormat : uint8_t { … };
QUICHE_EXPORT std::string PacketHeaderFormatToString(PacketHeaderFormat format);
struct QUICHE_EXPORT AckedPacket { … };
AckedPacketVector;
struct QUICHE_EXPORT LostPacket { … };
LostPacketVector;
enum QuicLongHeaderType : uint8_t { … };
QUICHE_EXPORT std::string QuicLongHeaderTypeToString(QuicLongHeaderType type);
enum QuicPacketHeaderTypeFlags : uint8_t { … };
enum MessageStatus { … };
QUICHE_EXPORT std::string MessageStatusToString(MessageStatus message_status);
struct QUICHE_EXPORT MessageResult { … };
QUICHE_EXPORT std::string MessageResultToString(MessageResult message_result);
enum WriteStreamDataResult { … };
enum StreamType : uint8_t { … };
enum PacketNumberSpace : uint8_t { … };
QUICHE_EXPORT std::string PacketNumberSpaceToString(
PacketNumberSpace packet_number_space);
enum AckResult { … };
enum class NewConnectionIdResult : uint8_t { … };
enum SerializedPacketFate : uint8_t { … };
QUICHE_EXPORT std::string SerializedPacketFateToString(
SerializedPacketFate fate);
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
const SerializedPacketFate fate);
enum QuicConnectionCloseType { … };
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
const QuicConnectionCloseType type);
QUICHE_EXPORT std::string QuicConnectionCloseTypeString(
QuicConnectionCloseType type);
enum HandshakeState { … };
struct QUICHE_EXPORT NextReleaseTimeResult { … };
struct QUICHE_EXPORT QuicPacketBuffer { … };
struct QUICHE_EXPORT QuicOwnedPacketBuffer : public QuicPacketBuffer { … };
enum class KeyUpdateReason { … };
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
const KeyUpdateReason reason);
QUICHE_EXPORT std::string KeyUpdateReasonString(KeyUpdateReason reason);
QuicSignatureAlgorithmVector;
struct QUICHE_EXPORT QuicSSLConfig { … };
QUICHE_EXPORT bool operator==(const QuicSSLConfig& lhs,
const QuicSSLConfig& rhs);
struct QUICHE_EXPORT QuicDelayedSSLConfig { … };
struct QUICHE_EXPORT ParsedClientHello { … };
QUICHE_EXPORT bool operator==(const ParsedClientHello& a,
const ParsedClientHello& b);
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
const ParsedClientHello& parsed_chlo);
enum QuicEcnCodepoint { … };
QUICHE_EXPORT std::string EcnCodepointToString(QuicEcnCodepoint ecn);
struct QUICHE_EXPORT QuicEcnCounts { … };
enum class QuicPriorityType : uint8_t { … };
QUICHE_EXPORT std::string QuicPriorityTypeToString(QuicPriorityType type);
QUICHE_EXPORT std::ostream& operator<<(std::ostream& os, QuicPriorityType type);
}
#endif