OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/quic/quic_protocol.h" | 5 #include "net/quic/quic_protocol.h" |
6 #include "base/stl_util.h" | 6 #include "base/stl_util.h" |
7 | 7 |
8 using base::StringPiece; | 8 using base::StringPiece; |
9 using std::map; | 9 using std::map; |
10 using std::numeric_limits; | 10 using std::numeric_limits; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 size_t GetStartOfEncryptedData( | 45 size_t GetStartOfEncryptedData( |
46 QuicGuidLength guid_length, | 46 QuicGuidLength guid_length, |
47 bool include_version, | 47 bool include_version, |
48 QuicSequenceNumberLength sequence_number_length) { | 48 QuicSequenceNumberLength sequence_number_length) { |
49 // Don't include the fec size, since encryption starts before private flags. | 49 // Don't include the fec size, since encryption starts before private flags. |
50 return GetPacketHeaderSize( | 50 return GetPacketHeaderSize( |
51 guid_length, include_version, sequence_number_length, NOT_IN_FEC_GROUP) - | 51 guid_length, include_version, sequence_number_length, NOT_IN_FEC_GROUP) - |
52 kPrivateFlagsSize; | 52 kPrivateFlagsSize; |
53 } | 53 } |
54 | 54 |
55 uint32 MakeQuicTag(char a, char b, char c, char d) { | |
56 return static_cast<uint32>(a) | | |
57 static_cast<uint32>(b) << 8 | | |
58 static_cast<uint32>(c) << 16 | | |
59 static_cast<uint32>(d) << 24; | |
60 } | |
61 | |
62 QuicPacketPublicHeader::QuicPacketPublicHeader() | 55 QuicPacketPublicHeader::QuicPacketPublicHeader() |
63 : guid(0), | 56 : guid(0), |
64 guid_length(PACKET_8BYTE_GUID), | 57 guid_length(PACKET_8BYTE_GUID), |
65 reset_flag(false), | 58 reset_flag(false), |
66 version_flag(false), | 59 version_flag(false), |
67 sequence_number_length(PACKET_6BYTE_SEQUENCE_NUMBER) { | 60 sequence_number_length(PACKET_6BYTE_SEQUENCE_NUMBER) { |
68 } | 61 } |
69 | 62 |
70 QuicPacketPublicHeader::QuicPacketPublicHeader( | 63 QuicPacketPublicHeader::QuicPacketPublicHeader( |
71 const QuicPacketPublicHeader& other) | 64 const QuicPacketPublicHeader& other) |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 QuicStreamFrame::QuicStreamFrame(QuicStreamId stream_id, | 105 QuicStreamFrame::QuicStreamFrame(QuicStreamId stream_id, |
113 bool fin, | 106 bool fin, |
114 QuicStreamOffset offset, | 107 QuicStreamOffset offset, |
115 StringPiece data) | 108 StringPiece data) |
116 : stream_id(stream_id), | 109 : stream_id(stream_id), |
117 fin(fin), | 110 fin(fin), |
118 offset(offset), | 111 offset(offset), |
119 data(data) { | 112 data(data) { |
120 } | 113 } |
121 | 114 |
| 115 uint32 MakeQuicTag(char a, char b, char c, char d) { |
| 116 return static_cast<uint32>(a) | |
| 117 static_cast<uint32>(b) << 8 | |
| 118 static_cast<uint32>(c) << 16 | |
| 119 static_cast<uint32>(d) << 24; |
| 120 } |
| 121 |
| 122 QuicVersion QuicVersionMax() { return kSupportedQuicVersions[0]; } |
| 123 |
| 124 QuicTag QuicVersionToQuicTag(const QuicVersion version) { |
| 125 switch (version) { |
| 126 case QUIC_VERSION_6: |
| 127 return MakeQuicTag('Q', '0', '0', '6'); |
| 128 // case QUIC_VERSION_7 |
| 129 // return MakeQuicTag('Q', '0', '0', '7'); |
| 130 default: |
| 131 LOG(ERROR) << "Unsupported QUIC version: " << version; |
| 132 return 0; |
| 133 } |
| 134 } |
| 135 |
| 136 QuicVersion QuicTagToQuicVersion(const QuicTag version_tag) { |
| 137 const QuicTag quic_tag_v6 = MakeQuicTag('Q', '0', '0', '6'); |
| 138 // const QuicTag quic_tag_v7 = MakeQuicTag('Q', '0', '0', '7'); |
| 139 |
| 140 if (version_tag == quic_tag_v6) { |
| 141 return QUIC_VERSION_6; |
| 142 // } else if (version_tag == quic_tag_v7) { |
| 143 // return QUIC_VERSION_7; |
| 144 } else { |
| 145 LOG(ERROR) << "Unsupported QUIC version: " << version_tag; |
| 146 return QUIC_VERSION_UNSUPPORTED; |
| 147 } |
| 148 } |
| 149 |
| 150 string QuicVersionToString(const QuicVersion version) { |
| 151 // TODO(rjshade): Possibly start using RETURN_STRING_LITERAL here when we |
| 152 // start supporting a lot of versions. |
| 153 switch (version) { |
| 154 case QUIC_VERSION_6: |
| 155 return "QUIC_VERSION_6"; |
| 156 // case QUIC_VERSION_7: |
| 157 // return "QUIC_VERSION_7"; |
| 158 default: |
| 159 return "QUIC_VERSION_UNSUPPORTED"; |
| 160 } |
| 161 } |
| 162 |
| 163 string QuicVersionArrayToString(const QuicVersion versions[], |
| 164 int num_versions) { |
| 165 string result = ""; |
| 166 for (int i = 0; i < num_versions; ++i) { |
| 167 const QuicVersion& version = versions[i]; |
| 168 result.append(QuicVersionToString(version)); |
| 169 result.append(","); |
| 170 } |
| 171 return result; |
| 172 } |
| 173 |
122 ostream& operator<<(ostream& os, const QuicPacketHeader& header) { | 174 ostream& operator<<(ostream& os, const QuicPacketHeader& header) { |
123 os << "{ guid: " << header.public_header.guid | 175 os << "{ guid: " << header.public_header.guid |
124 << ", guid_length:" << header.public_header.guid_length | 176 << ", guid_length:" << header.public_header.guid_length |
125 << ", reset_flag: " << header.public_header.reset_flag | 177 << ", reset_flag: " << header.public_header.reset_flag |
126 << ", version_flag: " << header.public_header.version_flag; | 178 << ", version_flag: " << header.public_header.version_flag; |
127 if (header.public_header.version_flag) { | 179 if (header.public_header.version_flag) { |
128 os << " version: "; | 180 os << " version: "; |
129 for (size_t i = 0; i < header.public_header.versions.size(); ++i) { | 181 for (size_t i = 0; i < header.public_header.versions.size(); ++i) { |
130 os << header.public_header.versions[0] << " "; | 182 os << header.public_header.versions[0] << " "; |
131 } | 183 } |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 return os; | 410 return os; |
359 } | 411 } |
360 | 412 |
361 ostream& operator<<(ostream& os, const QuicConsumedData& s) { | 413 ostream& operator<<(ostream& os, const QuicConsumedData& s) { |
362 os << "bytes_consumed: " << s.bytes_consumed | 414 os << "bytes_consumed: " << s.bytes_consumed |
363 << " fin_consumed: " << s.fin_consumed; | 415 << " fin_consumed: " << s.fin_consumed; |
364 return os; | 416 return os; |
365 } | 417 } |
366 | 418 |
367 } // namespace net | 419 } // namespace net |
OLD | NEW |