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

Side by Side Diff: net/quic/core/quic_protocol.h

Issue 2236973002: Landing Recent QUIC changes until 4AM, Aug 7, 2016 UTC-4 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: flip quic_sequencer_buffer_retire_block_in_time to true Created 4 years, 4 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 unified diff | Download patch
« no previous file with comments | « net/quic/core/quic_packet_generator_test.cc ('k') | net/quic/core/quic_protocol.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef NET_QUIC_QUIC_PROTOCOL_H_ 5 #ifndef NET_QUIC_QUIC_PROTOCOL_H_
6 #define NET_QUIC_QUIC_PROTOCOL_H_ 6 #define NET_QUIC_QUIC_PROTOCOL_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 // 380 //
381 // IMPORTANT: if you are adding to this list, follow the instructions at 381 // IMPORTANT: if you are adding to this list, follow the instructions at
382 // http://sites/quic/adding-and-removing-versions 382 // http://sites/quic/adding-and-removing-versions
383 static const QuicVersion kSupportedQuicVersions[] = { 383 static const QuicVersion kSupportedQuicVersions[] = {
384 QUIC_VERSION_36, QUIC_VERSION_35, QUIC_VERSION_34, QUIC_VERSION_33, 384 QUIC_VERSION_36, QUIC_VERSION_35, QUIC_VERSION_34, QUIC_VERSION_33,
385 QUIC_VERSION_32, QUIC_VERSION_31, QUIC_VERSION_30}; 385 QUIC_VERSION_32, QUIC_VERSION_31, QUIC_VERSION_30};
386 386
387 typedef std::vector<QuicVersion> QuicVersionVector; 387 typedef std::vector<QuicVersion> QuicVersionVector;
388 388
389 // Returns a vector of QUIC versions in kSupportedQuicVersions. 389 // Returns a vector of QUIC versions in kSupportedQuicVersions.
390 NET_EXPORT_PRIVATE QuicVersionVector QuicSupportedVersions(); 390 NET_EXPORT_PRIVATE QuicVersionVector AllSupportedVersions();
391
392 // Returns a vector of QUIC versions from kSupportedQuicVersions which exclude
393 // any versions which are disabled by flags.
394 NET_EXPORT_PRIVATE QuicVersionVector CurrentSupportedVersions();
391 395
392 // Returns a vector of QUIC versions from |versions| which exclude any versions 396 // Returns a vector of QUIC versions from |versions| which exclude any versions
393 // which are disabled by flags. 397 // which are disabled by flags.
394 NET_EXPORT_PRIVATE QuicVersionVector 398 NET_EXPORT_PRIVATE QuicVersionVector
395 FilterSupportedVersions(QuicVersionVector versions); 399 FilterSupportedVersions(QuicVersionVector versions);
396 400
401 // Returns QUIC version of |index| in result of |versions|. Returns
402 // QUIC_VERSION_UNSUPPORTED if |index| is out of bounds.
403 NET_EXPORT_PRIVATE QuicVersionVector
404 VersionOfIndex(const QuicVersionVector& versions, int index);
405
397 // QuicTag is written to and read from the wire, but we prefer to use 406 // QuicTag is written to and read from the wire, but we prefer to use
398 // the more readable QuicVersion at other levels. 407 // the more readable QuicVersion at other levels.
399 // Helper function which translates from a QuicVersion to a QuicTag. Returns 0 408 // Helper function which translates from a QuicVersion to a QuicTag. Returns 0
400 // if QuicVersion is unsupported. 409 // if QuicVersion is unsupported.
401 NET_EXPORT_PRIVATE QuicTag QuicVersionToQuicTag(const QuicVersion version); 410 NET_EXPORT_PRIVATE QuicTag QuicVersionToQuicTag(const QuicVersion version);
402 411
403 // Returns appropriate QuicVersion from a QuicTag. 412 // Returns appropriate QuicVersion from a QuicTag.
404 // Returns QUIC_VERSION_UNSUPPORTED if version_tag cannot be understood. 413 // Returns QUIC_VERSION_UNSUPPORTED if version_tag cannot be understood.
405 NET_EXPORT_PRIVATE QuicVersion QuicTagToQuicVersion(const QuicTag version_tag); 414 NET_EXPORT_PRIVATE QuicVersion QuicTagToQuicVersion(const QuicTag version_tag);
406 415
(...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 }; 1261 };
1253 // QuicFrameType consumes 8 bytes with padding. 1262 // QuicFrameType consumes 8 bytes with padding.
1254 static_assert(sizeof(QuicFrame) <= 16, 1263 static_assert(sizeof(QuicFrame) <= 16,
1255 "Frames larger than 8 bytes should be referenced by pointer."); 1264 "Frames larger than 8 bytes should be referenced by pointer.");
1256 1265
1257 typedef std::vector<QuicFrame> QuicFrames; 1266 typedef std::vector<QuicFrame> QuicFrames;
1258 1267
1259 class NET_EXPORT_PRIVATE QuicData { 1268 class NET_EXPORT_PRIVATE QuicData {
1260 public: 1269 public:
1261 QuicData(const char* buffer, size_t length); 1270 QuicData(const char* buffer, size_t length);
1262 QuicData(char* buffer, size_t length, bool owns_buffer); 1271 QuicData(const char* buffer, size_t length, bool owns_buffer);
1263 virtual ~QuicData(); 1272 virtual ~QuicData();
1264 1273
1265 base::StringPiece AsStringPiece() const { 1274 base::StringPiece AsStringPiece() const {
1266 return base::StringPiece(data(), length()); 1275 return base::StringPiece(data(), length());
1267 } 1276 }
1268 1277
1269 const char* data() const { return buffer_; } 1278 const char* data() const { return buffer_; }
1270 size_t length() const { return length_; } 1279 size_t length() const { return length_; }
1271 bool owns_buffer() const { return owns_buffer_; } 1280 bool owns_buffer() const { return owns_buffer_; }
1272 1281
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1304 const bool includes_path_id_; 1313 const bool includes_path_id_;
1305 const bool includes_diversification_nonce_; 1314 const bool includes_diversification_nonce_;
1306 const QuicPacketNumberLength packet_number_length_; 1315 const QuicPacketNumberLength packet_number_length_;
1307 1316
1308 DISALLOW_COPY_AND_ASSIGN(QuicPacket); 1317 DISALLOW_COPY_AND_ASSIGN(QuicPacket);
1309 }; 1318 };
1310 1319
1311 class NET_EXPORT_PRIVATE QuicEncryptedPacket : public QuicData { 1320 class NET_EXPORT_PRIVATE QuicEncryptedPacket : public QuicData {
1312 public: 1321 public:
1313 QuicEncryptedPacket(const char* buffer, size_t length); 1322 QuicEncryptedPacket(const char* buffer, size_t length);
1314 QuicEncryptedPacket(char* buffer, size_t length, bool owns_buffer); 1323 QuicEncryptedPacket(const char* buffer, size_t length, bool owns_buffer);
1315 1324
1316 // Clones the packet into a new packet which owns the buffer. 1325 // Clones the packet into a new packet which owns the buffer.
1317 QuicEncryptedPacket* Clone() const; 1326 QuicEncryptedPacket* Clone() const;
1318 1327
1319 // By default, gtest prints the raw bytes of an object. The bool data 1328 // By default, gtest prints the raw bytes of an object. The bool data
1320 // member (in the base class QuicData) causes this object to have padding 1329 // member (in the base class QuicData) causes this object to have padding
1321 // bytes, which causes the default gtest object printer to read 1330 // bytes, which causes the default gtest object printer to read
1322 // uninitialize memory. So we need to teach gtest how to print this object. 1331 // uninitialize memory. So we need to teach gtest how to print this object.
1323 NET_EXPORT_PRIVATE friend std::ostream& operator<<( 1332 NET_EXPORT_PRIVATE friend std::ostream& operator<<(
1324 std::ostream& os, 1333 std::ostream& os,
1325 const QuicEncryptedPacket& s); 1334 const QuicEncryptedPacket& s);
1326 1335
1327 private: 1336 private:
1328 DISALLOW_COPY_AND_ASSIGN(QuicEncryptedPacket); 1337 DISALLOW_COPY_AND_ASSIGN(QuicEncryptedPacket);
1329 }; 1338 };
1330 1339
1331 // A received encrypted QUIC packet, with a recorded time of receipt. 1340 // A received encrypted QUIC packet, with a recorded time of receipt.
1332 class NET_EXPORT_PRIVATE QuicReceivedPacket : public QuicEncryptedPacket { 1341 class NET_EXPORT_PRIVATE QuicReceivedPacket : public QuicEncryptedPacket {
1333 public: 1342 public:
1334 QuicReceivedPacket(const char* buffer, size_t length, QuicTime receipt_time); 1343 QuicReceivedPacket(const char* buffer, size_t length, QuicTime receipt_time);
1335 QuicReceivedPacket(char* buffer, 1344 QuicReceivedPacket(const char* buffer,
1336 size_t length, 1345 size_t length,
1337 QuicTime receipt_time, 1346 QuicTime receipt_time,
1338 bool owns_buffer); 1347 bool owns_buffer);
1348 QuicReceivedPacket(const char* buffer,
1349 size_t length,
1350 QuicTime receipt_time,
1351 bool owns_buffer,
1352 int ttl,
1353 bool ttl_valid);
1339 1354
1340 // Clones the packet into a new packet which owns the buffer. 1355 // Clones the packet into a new packet which owns the buffer.
1341 QuicReceivedPacket* Clone() const; 1356 QuicReceivedPacket* Clone() const;
1342 1357
1343 // Returns the time at which the packet was received. 1358 // Returns the time at which the packet was received.
1344 QuicTime receipt_time() const { return receipt_time_; } 1359 QuicTime receipt_time() const { return receipt_time_; }
1345 1360
1361 // This is the TTL of the packet, assuming ttl_vaild_ is true.
1362 int ttl() const { return ttl_; }
1363
1346 // By default, gtest prints the raw bytes of an object. The bool data 1364 // By default, gtest prints the raw bytes of an object. The bool data
1347 // member (in the base class QuicData) causes this object to have padding 1365 // member (in the base class QuicData) causes this object to have padding
1348 // bytes, which causes the default gtest object printer to read 1366 // bytes, which causes the default gtest object printer to read
1349 // uninitialize memory. So we need to teach gtest how to print this object. 1367 // uninitialize memory. So we need to teach gtest how to print this object.
1350 NET_EXPORT_PRIVATE friend std::ostream& operator<<( 1368 NET_EXPORT_PRIVATE friend std::ostream& operator<<(
1351 std::ostream& os, 1369 std::ostream& os,
1352 const QuicReceivedPacket& s); 1370 const QuicReceivedPacket& s);
1353 1371
1354 private: 1372 private:
1355 const QuicTime receipt_time_; 1373 const QuicTime receipt_time_;
1374 int ttl_;
1356 1375
1357 DISALLOW_COPY_AND_ASSIGN(QuicReceivedPacket); 1376 DISALLOW_COPY_AND_ASSIGN(QuicReceivedPacket);
1358 }; 1377 };
1359 1378
1360 // Pure virtual class to listen for packet acknowledgements. 1379 // Pure virtual class to listen for packet acknowledgements.
1361 class NET_EXPORT_PRIVATE QuicAckListenerInterface 1380 class NET_EXPORT_PRIVATE QuicAckListenerInterface
1362 : public base::RefCounted<QuicAckListenerInterface> { 1381 : public base::RefCounted<QuicAckListenerInterface> {
1363 public: 1382 public:
1364 QuicAckListenerInterface() {} 1383 QuicAckListenerInterface() {}
1365 1384
(...skipping 29 matching lines...) Expand all
1395 public: 1414 public:
1396 explicit QuicVersionManager(QuicVersionVector supported_versions); 1415 explicit QuicVersionManager(QuicVersionVector supported_versions);
1397 ~QuicVersionManager(); 1416 ~QuicVersionManager();
1398 1417
1399 // Returns supported versions based on flags. 1418 // Returns supported versions based on flags.
1400 const QuicVersionVector& GetSupportedVersions(); 1419 const QuicVersionVector& GetSupportedVersions();
1401 1420
1402 private: 1421 private:
1403 // FLAGS_quic_enable_version_35 1422 // FLAGS_quic_enable_version_35
1404 bool enable_quic_version_35_; 1423 bool enable_quic_version_35_;
1405 // FLAGS_quic_enable_version_36 1424 // FLAGS_quic_enable_version_36_v2
1406 bool enable_quic_version_36_; 1425 bool enable_quic_version_36_;
1407 // The list of versions that may be supported. 1426 // The list of versions that may be supported.
1408 QuicVersionVector allowed_supported_versions_; 1427 QuicVersionVector allowed_supported_versions_;
1409 // This vector contains QUIC versions which are currently supported based 1428 // This vector contains QUIC versions which are currently supported based
1410 // on flags. 1429 // on flags.
1411 QuicVersionVector filtered_supported_versions_; 1430 QuicVersionVector filtered_supported_versions_;
1412 }; 1431 };
1413 1432
1414 struct NET_EXPORT_PRIVATE AckListenerWrapper { 1433 struct NET_EXPORT_PRIVATE AckListenerWrapper {
1415 AckListenerWrapper(QuicAckListenerInterface* listener, 1434 AckListenerWrapper(QuicAckListenerInterface* listener,
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 : iov(iov), iov_count(iov_count), total_length(total_length) {} 1554 : iov(iov), iov_count(iov_count), total_length(total_length) {}
1536 1555
1537 const struct iovec* iov; 1556 const struct iovec* iov;
1538 const int iov_count; 1557 const int iov_count;
1539 const size_t total_length; 1558 const size_t total_length;
1540 }; 1559 };
1541 1560
1542 } // namespace net 1561 } // namespace net
1543 1562
1544 #endif // NET_QUIC_QUIC_PROTOCOL_H_ 1563 #endif // NET_QUIC_QUIC_PROTOCOL_H_
OLDNEW
« no previous file with comments | « net/quic/core/quic_packet_generator_test.cc ('k') | net/quic/core/quic_protocol.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698