Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(784)

Unified Diff: net/quic/quic_protocol.h

Issue 16256017: Land Recent QUIC changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix for Android DEBUG builds with DEATH_TEST Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/quic/quic_protocol.h
diff --git a/net/quic/quic_protocol.h b/net/quic/quic_protocol.h
index 4cde9969ad2dc977f5972a22e7793c1802eecffd..608c526cb466ba6d858c19f415cec4f2961f8c21 100644
--- a/net/quic/quic_protocol.h
+++ b/net/quic/quic_protocol.h
@@ -53,8 +53,6 @@ const size_t kDefaultMaxStreamsPerConnection = 100;
const size_t kPublicFlagsSize = 1;
// Number of bytes reserved for version number in the packet header.
const size_t kQuicVersionSize = 4;
-// Number of bytes reserved for sequence number in the packet header.
-const size_t kSequenceNumberSize = 6;
// Number of bytes reserved for private flags in the packet header.
const size_t kPrivateFlagsSize = 1;
// Number of bytes reserved for FEC group in the packet header.
@@ -119,6 +117,13 @@ enum InFecGroup {
IN_FEC_GROUP,
};
+enum QuicSequenceNumberLength {
+ PACKET_1BYTE_SEQUENCE_NUMBER = 1,
+ PACKET_2BYTE_SEQUENCE_NUMBER = 2,
+ PACKET_4BYTE_SEQUENCE_NUMBER = 4,
+ PACKET_6BYTE_SEQUENCE_NUMBER = 6
+};
+
enum QuicPacketPublicFlags {
PACKET_PUBLIC_FLAGS_NONE = 0,
PACKET_PUBLIC_FLAGS_VERSION = 1 << 0, // Packet header contains version info.
@@ -128,7 +133,12 @@ enum QuicPacketPublicFlags {
PACKET_PUBLIC_FLAGS_1BYTE_GUID = 1 << 2,
PACKET_PUBLIC_FLAGS_4BYTE_GUID = 1 << 3,
PACKET_PUBLIC_FLAGS_8BYTE_GUID = 1 << 3 | 1 << 2,
- PACKET_PUBLIC_FLAGS_MAX = (1 << 4) - 1 // All bits set.
+ // Packet sequence number length in bytes.
+ PACKET_PUBLIC_FLAGS_1BYTE_SEQUENCE = 0,
+ PACKET_PUBLIC_FLAGS_2BYTE_SEQUENCE = 1 << 4,
+ PACKET_PUBLIC_FLAGS_4BYTE_SEQUENCE = 1 << 5,
+ PACKET_PUBLIC_FLAGS_6BYTE_SEQUENCE = 1 << 5 | 1 << 4,
+ PACKET_PUBLIC_FLAGS_MAX = (1 << 6) - 1 // All bits set.
};
enum QuicPacketPrivateFlags {
@@ -142,19 +152,25 @@ enum QuicPacketPrivateFlags {
// Size in bytes of the data or fec packet header.
NET_EXPORT_PRIVATE size_t GetPacketHeaderSize(QuicPacketHeader header);
-NET_EXPORT_PRIVATE size_t GetPacketHeaderSize(QuicGuidLength guid_length,
- bool include_version,
- InFecGroup is_in_fec_group);
+NET_EXPORT_PRIVATE size_t GetPacketHeaderSize(
+ QuicGuidLength guid_length,
+ bool include_version,
+ QuicSequenceNumberLength sequence_number_length,
+ InFecGroup is_in_fec_group);
// Size in bytes of the public reset packet.
NET_EXPORT_PRIVATE size_t GetPublicResetPacketSize();
// Index of the first byte in a QUIC packet of FEC protected data.
-NET_EXPORT_PRIVATE size_t GetStartOfFecProtectedData(QuicGuidLength guid_length,
- bool include_version);
+NET_EXPORT_PRIVATE size_t GetStartOfFecProtectedData(
+ QuicGuidLength guid_length,
+ bool include_version,
+ QuicSequenceNumberLength sequence_number_length);
// Index of the first byte in a QUIC packet of encrypted data.
-NET_EXPORT_PRIVATE size_t GetStartOfEncryptedData(QuicGuidLength guid_length,
- bool include_version);
+NET_EXPORT_PRIVATE size_t GetStartOfEncryptedData(
+ QuicGuidLength guid_length,
+ bool include_version,
+ QuicSequenceNumberLength sequence_number_length);
enum QuicRstStreamErrorCode {
QUIC_STREAM_NO_ERROR = 0,
@@ -295,7 +311,7 @@ const QuicTag kUnsupportedVersion = -1;
// Each time the wire format changes, this need needs to be incremented.
// At some point, we will actually freeze the wire format and make an official
// version number, but this works for now.
-const QuicTag kQuicVersion1 = TAG('Q', '0', '0', '5');
+const QuicTag kQuicVersion1 = TAG('Q', '0', '0', '6');
#undef TAG
// MakeQuicTag returns a value given the four bytes. For example:
@@ -314,6 +330,7 @@ struct NET_EXPORT_PRIVATE QuicPacketPublicHeader {
QuicGuidLength guid_length;
bool reset_flag;
bool version_flag;
+ QuicSequenceNumberLength sequence_number_length;
QuicTagVector versions;
};
@@ -577,8 +594,6 @@ typedef std::vector<QuicFrame> QuicFrames;
struct NET_EXPORT_PRIVATE QuicFecData {
QuicFecData();
- bool operator==(const QuicFecData& other) const;
-
// The FEC group number is also the sequence number of the first
// FEC protected packet. The last protected packet's sequence number will
// be one less than the sequence number of the FEC packet.
@@ -621,22 +636,26 @@ class NET_EXPORT_PRIVATE QuicData {
class NET_EXPORT_PRIVATE QuicPacket : public QuicData {
public:
- static QuicPacket* NewDataPacket(char* buffer,
- size_t length,
- bool owns_buffer,
- QuicGuidLength guid_length,
- bool includes_version) {
- return new QuicPacket(
- buffer, length, owns_buffer, guid_length, includes_version, false);
+ static QuicPacket* NewDataPacket(
+ char* buffer,
+ size_t length,
+ bool owns_buffer,
+ QuicGuidLength guid_length,
+ bool includes_version,
+ QuicSequenceNumberLength sequence_number_length) {
+ return new QuicPacket(buffer, length, owns_buffer, guid_length,
+ includes_version, sequence_number_length, false);
}
- static QuicPacket* NewFecPacket(char* buffer,
- size_t length,
- bool owns_buffer,
- QuicGuidLength guid_length,
- bool includes_version) {
- return new QuicPacket(
- buffer, length, owns_buffer, guid_length, includes_version, true);
+ static QuicPacket* NewFecPacket(
+ char* buffer,
+ size_t length,
+ bool owns_buffer,
+ QuicGuidLength guid_length,
+ bool includes_version,
+ QuicSequenceNumberLength sequence_number_length) {
+ return new QuicPacket(buffer, length, owns_buffer, guid_length,
+ includes_version, sequence_number_length, true);
}
base::StringPiece FecProtectedData() const;
@@ -656,17 +675,20 @@ class NET_EXPORT_PRIVATE QuicPacket : public QuicData {
bool owns_buffer,
QuicGuidLength guid_length,
bool includes_version,
+ QuicSequenceNumberLength sequence_number_length,
bool is_fec_packet)
: QuicData(buffer, length, owns_buffer),
buffer_(buffer),
is_fec_packet_(is_fec_packet),
guid_length_(guid_length),
- includes_version_(includes_version) {}
+ includes_version_(includes_version),
+ sequence_number_length_(sequence_number_length) {}
char* buffer_;
const bool is_fec_packet_;
const QuicGuidLength guid_length_;
const bool includes_version_;
+ const QuicSequenceNumberLength sequence_number_length_;
DISALLOW_COPY_AND_ASSIGN(QuicPacket);
};

Powered by Google App Engine
This is Rietveld 408576698