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

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

Issue 2850573002: Landing Recent QUIC changes until 3:35 PM, Apr 26, 2017 UTC-4 (Closed)
Patch Set: Remove Disconnect from ~QuicTestClient Created 3 years, 7 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_flow_controller.cc ('k') | net/quic/core/quic_framer.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_CORE_QUIC_FRAMER_H_ 5 #ifndef NET_QUIC_CORE_QUIC_FRAMER_H_
6 #define NET_QUIC_CORE_QUIC_FRAMER_H_ 6 #define NET_QUIC_CORE_QUIC_FRAMER_H_
7 7
8 #include <cstddef> 8 #include <cstddef>
9 #include <cstdint> 9 #include <cstdint>
10 #include <memory> 10 #include <memory>
11 #include <string> 11 #include <string>
12 12
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "net/quic/core/quic_packets.h" 14 #include "net/quic/core/quic_packets.h"
15 #include "net/quic/platform/api/quic_endian.h"
15 #include "net/quic/platform/api/quic_export.h" 16 #include "net/quic/platform/api/quic_export.h"
16 #include "net/quic/platform/api/quic_string_piece.h" 17 #include "net/quic/platform/api/quic_string_piece.h"
17 18
18 namespace net { 19 namespace net {
19 20
20 namespace test { 21 namespace test {
21 class QuicFramerPeer; 22 class QuicFramerPeer;
22 } // namespace test 23 } // namespace test
23 24
24 class QuicDataReader; 25 class QuicDataReader;
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 char* buffer, 306 char* buffer,
306 size_t buffer_len); 307 size_t buffer_len);
307 308
308 // Returns the maximum length of plaintext that can be encrypted 309 // Returns the maximum length of plaintext that can be encrypted
309 // to ciphertext no larger than |ciphertext_size|. 310 // to ciphertext no larger than |ciphertext_size|.
310 size_t GetMaxPlaintextSize(size_t ciphertext_size); 311 size_t GetMaxPlaintextSize(size_t ciphertext_size);
311 312
312 const std::string& detailed_error() { return detailed_error_; } 313 const std::string& detailed_error() { return detailed_error_; }
313 314
314 // The minimum packet number length required to represent |packet_number|. 315 // The minimum packet number length required to represent |packet_number|.
315 static QuicPacketNumberLength GetMinSequenceNumberLength( 316 static QuicPacketNumberLength GetMinPacketNumberLength(
316 QuicPacketNumber packet_number); 317 QuicPacketNumber packet_number);
317 318
318 void SetSupportedVersions(const QuicVersionVector& versions) { 319 void SetSupportedVersions(const QuicVersionVector& versions) {
319 supported_versions_ = versions; 320 supported_versions_ = versions;
320 quic_version_ = versions[0]; 321 quic_version_ = versions[0];
321 } 322 }
322 323
324 // Returns byte order to read/write integers and floating numbers.
325 Endianness endianness() const;
326
323 void set_validate_flags(bool value) { validate_flags_ = value; } 327 void set_validate_flags(bool value) { validate_flags_ = value; }
324 328
325 Perspective perspective() const { return perspective_; } 329 Perspective perspective() const { return perspective_; }
326 330
327 QuicTag last_version_tag() { return last_version_tag_; } 331 QuicTag last_version_tag() { return last_version_tag_; }
328 332
329 private: 333 private:
330 friend class test::QuicFramerPeer; 334 friend class test::QuicFramerPeer;
331 335
332 typedef std::map<QuicPacketNumber, uint8_t> NackRangeMap; 336 typedef std::map<QuicPacketNumber, uint8_t> NackRangeMap;
(...skipping 24 matching lines...) Expand all
357 QuicPacketPublicHeader* public_header); 361 QuicPacketPublicHeader* public_header);
358 362
359 bool ProcessPublicHeader(QuicDataReader* reader, 363 bool ProcessPublicHeader(QuicDataReader* reader,
360 QuicPacketPublicHeader* header); 364 QuicPacketPublicHeader* header);
361 365
362 // Processes the unauthenticated portion of the header into |header| from 366 // Processes the unauthenticated portion of the header into |header| from
363 // the current QuicDataReader. Returns true on success, false on failure. 367 // the current QuicDataReader. Returns true on success, false on failure.
364 bool ProcessUnauthenticatedHeader(QuicDataReader* encrypted_reader, 368 bool ProcessUnauthenticatedHeader(QuicDataReader* encrypted_reader,
365 QuicPacketHeader* header); 369 QuicPacketHeader* header);
366 370
367 bool ProcessPacketSequenceNumber(QuicDataReader* reader, 371 // First processes possibly truncated packet number. Calculates the full
368 QuicPacketNumberLength packet_number_length, 372 // packet number from the truncated one and the last seen packet number, and
369 QuicPacketNumber base_packet_number, 373 // stores it to |packet_number|.
370 QuicPacketNumber* packet_number); 374 bool ProcessAndCalculatePacketNumber(
375 QuicDataReader* reader,
376 QuicPacketNumberLength packet_number_length,
377 QuicPacketNumber base_packet_number,
378 QuicPacketNumber* packet_number);
371 bool ProcessFrameData(QuicDataReader* reader, const QuicPacketHeader& header); 379 bool ProcessFrameData(QuicDataReader* reader, const QuicPacketHeader& header);
372 bool ProcessStreamFrame(QuicDataReader* reader, 380 bool ProcessStreamFrame(QuicDataReader* reader,
373 uint8_t frame_type, 381 uint8_t frame_type,
374 QuicStreamFrame* frame); 382 QuicStreamFrame* frame);
375 bool ProcessAckFrame(QuicDataReader* reader, 383 bool ProcessAckFrame(QuicDataReader* reader,
376 uint8_t frame_type, 384 uint8_t frame_type,
377 QuicAckFrame* frame); 385 QuicAckFrame* frame);
378 bool ProcessTimestampsInAckFrame(QuicDataReader* reader, QuicAckFrame* frame); 386 bool ProcessTimestampsInAckFrame(QuicDataReader* reader, QuicAckFrame* frame);
379 bool ProcessStopWaitingFrame(QuicDataReader* reader, 387 bool ProcessStopWaitingFrame(QuicDataReader* reader,
380 const QuicPacketHeader& public_header, 388 const QuicPacketHeader& public_header,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 QuicPacketNumberLength packet_number_length); 426 QuicPacketNumberLength packet_number_length);
419 427
420 // Computes the wire size in bytes of the |ack| frame. 428 // Computes the wire size in bytes of the |ack| frame.
421 size_t GetAckFrameSize(const QuicAckFrame& ack); 429 size_t GetAckFrameSize(const QuicAckFrame& ack);
422 430
423 // Computes the wire size in bytes of the payload of |frame|. 431 // Computes the wire size in bytes of the payload of |frame|.
424 size_t ComputeFrameLength(const QuicFrame& frame, 432 size_t ComputeFrameLength(const QuicFrame& frame,
425 bool last_frame_in_packet, 433 bool last_frame_in_packet,
426 QuicPacketNumberLength packet_number_length); 434 QuicPacketNumberLength packet_number_length);
427 435
428 static bool AppendPacketSequenceNumber( 436 static bool AppendPacketNumber(QuicPacketNumberLength packet_number_length,
429 QuicPacketNumberLength packet_number_length, 437 QuicPacketNumber packet_number,
430 QuicPacketNumber packet_number, 438 QuicDataWriter* writer);
431 QuicDataWriter* writer); 439 static bool AppendStreamId(size_t stream_id_length,
440 QuicStreamId stream_id,
441 QuicDataWriter* writer);
442 static bool AppendStreamOffset(size_t offset_length,
443 QuicStreamOffset offset,
444 QuicDataWriter* writer);
432 445
433 // Appends a single ACK block to |writer| and returns true if the block was 446 // Appends a single ACK block to |writer| and returns true if the block was
434 // successfully appended. 447 // successfully appended.
435 static bool AppendAckBlock(uint8_t gap, 448 static bool AppendAckBlock(uint8_t gap,
436 QuicPacketNumberLength length_length, 449 QuicPacketNumberLength length_length,
437 QuicPacketNumber length, 450 QuicPacketNumber length,
438 QuicDataWriter* writer); 451 QuicDataWriter* writer);
439 452
440 static uint8_t GetSequenceNumberFlags( 453 static uint8_t GetPacketNumberFlags(
441 QuicPacketNumberLength packet_number_length); 454 QuicPacketNumberLength packet_number_length);
442 455
443 static AckFrameInfo GetAckFrameInfo(const QuicAckFrame& frame); 456 static AckFrameInfo GetAckFrameInfo(const QuicAckFrame& frame);
444 457
445 // The Append* methods attempt to write the provided header or frame using the 458 // The Append* methods attempt to write the provided header or frame using the
446 // |writer|, and return true if successful. 459 // |writer|, and return true if successful.
447 460
448 bool AppendAckFrameAndTypeByte(const QuicAckFrame& frame, 461 bool AppendAckFrameAndTypeByte(const QuicAckFrame& frame,
449 QuicDataWriter* builder); 462 QuicDataWriter* builder);
450 bool AppendTimestampToAckFrame(const QuicAckFrame& frame, 463 bool AppendTimestampToAckFrame(const QuicAckFrame& frame,
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 QuicTime::Delta last_timestamp_; 528 QuicTime::Delta last_timestamp_;
516 // The diversification nonce from the last received packet. 529 // The diversification nonce from the last received packet.
517 DiversificationNonce last_nonce_; 530 DiversificationNonce last_nonce_;
518 531
519 DISALLOW_COPY_AND_ASSIGN(QuicFramer); 532 DISALLOW_COPY_AND_ASSIGN(QuicFramer);
520 }; 533 };
521 534
522 } // namespace net 535 } // namespace net
523 536
524 #endif // NET_QUIC_CORE_QUIC_FRAMER_H_ 537 #endif // NET_QUIC_CORE_QUIC_FRAMER_H_
OLDNEW
« no previous file with comments | « net/quic/core/quic_flow_controller.cc ('k') | net/quic/core/quic_framer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698