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

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

Issue 478153003: Change the wire format of the ack frame to include a compressed version (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase TOT and pass clock to QuicTestPacketMaker and use it in AckPacket Created 6 years, 3 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/quic_connection_test.cc ('k') | net/quic/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_QUIC_FRAMER_H_ 5 #ifndef NET_QUIC_QUIC_FRAMER_H_
6 #define NET_QUIC_QUIC_FRAMER_H_ 6 #define NET_QUIC_QUIC_FRAMER_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 27 matching lines...) Expand all
38 // Maximum number of bytes reserved for byte offset in stream frame. 38 // Maximum number of bytes reserved for byte offset in stream frame.
39 const size_t kQuicMaxStreamOffsetSize = 8; 39 const size_t kQuicMaxStreamOffsetSize = 8;
40 // Number of bytes reserved to store payload length in stream frame. 40 // Number of bytes reserved to store payload length in stream frame.
41 const size_t kQuicStreamPayloadLengthSize = 2; 41 const size_t kQuicStreamPayloadLengthSize = 2;
42 42
43 // Size in bytes of the entropy hash sent in ack frames. 43 // Size in bytes of the entropy hash sent in ack frames.
44 const size_t kQuicEntropyHashSize = 1; 44 const size_t kQuicEntropyHashSize = 1;
45 // Size in bytes reserved for the delta time of the largest observed 45 // Size in bytes reserved for the delta time of the largest observed
46 // sequence number in ack frames. 46 // sequence number in ack frames.
47 const size_t kQuicDeltaTimeLargestObservedSize = 2; 47 const size_t kQuicDeltaTimeLargestObservedSize = 2;
48 // Size in bytes reserved for the number of received packets with timestamps.
49 const size_t kQuicNumTimestampsSize = 1;
48 // Size in bytes reserved for the number of missing packets in ack frames. 50 // Size in bytes reserved for the number of missing packets in ack frames.
49 const size_t kNumberOfNackRangesSize = 1; 51 const size_t kNumberOfNackRangesSize = 1;
50 // Maximum number of missing packet ranges that can fit within an ack frame. 52 // Maximum number of missing packet ranges that can fit within an ack frame.
51 const size_t kMaxNackRanges = 53 const size_t kMaxNackRanges =
52 (1 << (kNumberOfNackRangesSize * 8)) - 1; 54 (1 << (kNumberOfNackRangesSize * 8)) - 1;
53 // Size in bytes reserved for the number of revived packets in ack frames. 55 // Size in bytes reserved for the number of revived packets in ack frames.
54 const size_t kNumberOfRevivedPacketsSize = 1; 56 const size_t kNumberOfRevivedPacketsSize = 1;
55 // Maximum number of revived packets that can fit within an ack frame. 57 // Maximum number of revived packets that can fit within an ack frame.
56 const size_t kMaxRevivedPackets = 58 const size_t kMaxRevivedPackets =
57 (1 << (kNumberOfRevivedPacketsSize * 8)) - 1; 59 (1 << (kNumberOfRevivedPacketsSize * 8)) - 1;
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 404
403 bool ProcessPacketHeader(QuicPacketHeader* header, 405 bool ProcessPacketHeader(QuicPacketHeader* header,
404 const QuicEncryptedPacket& packet); 406 const QuicEncryptedPacket& packet);
405 407
406 bool ProcessPacketSequenceNumber( 408 bool ProcessPacketSequenceNumber(
407 QuicSequenceNumberLength sequence_number_length, 409 QuicSequenceNumberLength sequence_number_length,
408 QuicPacketSequenceNumber* sequence_number); 410 QuicPacketSequenceNumber* sequence_number);
409 bool ProcessFrameData(const QuicPacketHeader& header); 411 bool ProcessFrameData(const QuicPacketHeader& header);
410 bool ProcessStreamFrame(uint8 frame_type, QuicStreamFrame* frame); 412 bool ProcessStreamFrame(uint8 frame_type, QuicStreamFrame* frame);
411 bool ProcessAckFrame(uint8 frame_type, QuicAckFrame* frame); 413 bool ProcessAckFrame(uint8 frame_type, QuicAckFrame* frame);
414 bool ProcessTimestampsInAckFrame(QuicAckFrame* frame);
412 bool ProcessStopWaitingFrame(const QuicPacketHeader& public_header, 415 bool ProcessStopWaitingFrame(const QuicPacketHeader& public_header,
413 QuicStopWaitingFrame* stop_waiting); 416 QuicStopWaitingFrame* stop_waiting);
414 bool ProcessQuicCongestionFeedbackFrame( 417 bool ProcessCongestionFeedbackFrame(
415 QuicCongestionFeedbackFrame* congestion_feedback); 418 QuicCongestionFeedbackFrame* congestion_feedback);
416 bool ProcessRstStreamFrame(QuicRstStreamFrame* frame); 419 bool ProcessRstStreamFrame(QuicRstStreamFrame* frame);
417 bool ProcessConnectionCloseFrame(QuicConnectionCloseFrame* frame); 420 bool ProcessConnectionCloseFrame(QuicConnectionCloseFrame* frame);
418 bool ProcessGoAwayFrame(QuicGoAwayFrame* frame); 421 bool ProcessGoAwayFrame(QuicGoAwayFrame* frame);
419 bool ProcessWindowUpdateFrame(QuicWindowUpdateFrame* frame); 422 bool ProcessWindowUpdateFrame(QuicWindowUpdateFrame* frame);
420 bool ProcessBlockedFrame(QuicBlockedFrame* frame); 423 bool ProcessBlockedFrame(QuicBlockedFrame* frame);
421 424
422 bool DecryptPayload(const QuicPacketHeader& header, 425 bool DecryptPayload(const QuicPacketHeader& header,
423 const QuicEncryptedPacket& packet); 426 const QuicEncryptedPacket& packet);
424 427
425 // Returns the full packet sequence number from the truncated 428 // Returns the full packet sequence number from the truncated
426 // wire format version and the last seen packet sequence number. 429 // wire format version and the last seen packet sequence number.
427 QuicPacketSequenceNumber CalculatePacketSequenceNumberFromWire( 430 QuicPacketSequenceNumber CalculatePacketSequenceNumberFromWire(
428 QuicSequenceNumberLength sequence_number_length, 431 QuicSequenceNumberLength sequence_number_length,
429 QuicPacketSequenceNumber packet_sequence_number) const; 432 QuicPacketSequenceNumber packet_sequence_number) const;
430 433
434 // Returns the QuicTime::Delta corresponding to the time from when the framer
435 // was created.
436 const QuicTime::Delta CalculateTimestampFromWire(uint32 time_delta_us);
437
431 // Computes the wire size in bytes of the |ack| frame, assuming no truncation. 438 // Computes the wire size in bytes of the |ack| frame, assuming no truncation.
432 size_t GetAckFrameSize(const QuicAckFrame& ack, 439 size_t GetAckFrameSize(const QuicAckFrame& ack,
433 QuicSequenceNumberLength sequence_number_length); 440 QuicSequenceNumberLength sequence_number_length);
434 441
435 // Computes the wire size in bytes of the payload of |frame|. 442 // Computes the wire size in bytes of the payload of |frame|.
436 size_t ComputeFrameLength(const QuicFrame& frame, 443 size_t ComputeFrameLength(const QuicFrame& frame,
437 bool last_frame_in_packet, 444 bool last_frame_in_packet,
438 InFecGroup is_in_fec_group, 445 InFecGroup is_in_fec_group,
439 QuicSequenceNumberLength sequence_number_length); 446 QuicSequenceNumberLength sequence_number_length);
440 447
(...skipping 15 matching lines...) Expand all
456 bool last_frame_in_packet, 463 bool last_frame_in_packet,
457 QuicDataWriter* writer); 464 QuicDataWriter* writer);
458 bool AppendStreamFrame(const QuicStreamFrame& frame, 465 bool AppendStreamFrame(const QuicStreamFrame& frame,
459 bool last_frame_in_packet, 466 bool last_frame_in_packet,
460 QuicDataWriter* builder); 467 QuicDataWriter* builder);
461 bool AppendAckFrameAndTypeByte(const QuicPacketHeader& header, 468 bool AppendAckFrameAndTypeByte(const QuicPacketHeader& header,
462 const QuicAckFrame& frame, 469 const QuicAckFrame& frame,
463 QuicDataWriter* builder); 470 QuicDataWriter* builder);
464 bool AppendCongestionFeedbackFrame(const QuicCongestionFeedbackFrame& frame, 471 bool AppendCongestionFeedbackFrame(const QuicCongestionFeedbackFrame& frame,
465 QuicDataWriter* builder); 472 QuicDataWriter* builder);
473 bool AppendTimestampToAckFrame(const QuicAckFrame& frame,
474 QuicDataWriter* builder);
466 bool AppendStopWaitingFrame(const QuicPacketHeader& header, 475 bool AppendStopWaitingFrame(const QuicPacketHeader& header,
467 const QuicStopWaitingFrame& frame, 476 const QuicStopWaitingFrame& frame,
468 QuicDataWriter* builder); 477 QuicDataWriter* builder);
469 bool AppendRstStreamFrame(const QuicRstStreamFrame& frame, 478 bool AppendRstStreamFrame(const QuicRstStreamFrame& frame,
470 QuicDataWriter* builder); 479 QuicDataWriter* builder);
471 bool AppendConnectionCloseFrame(const QuicConnectionCloseFrame& frame, 480 bool AppendConnectionCloseFrame(const QuicConnectionCloseFrame& frame,
472 QuicDataWriter* builder); 481 QuicDataWriter* builder);
473 bool AppendGoAwayFrame(const QuicGoAwayFrame& frame, QuicDataWriter* writer); 482 bool AppendGoAwayFrame(const QuicGoAwayFrame& frame, QuicDataWriter* writer);
474 bool AppendWindowUpdateFrame(const QuicWindowUpdateFrame& frame, 483 bool AppendWindowUpdateFrame(const QuicWindowUpdateFrame& frame,
475 QuicDataWriter* writer); 484 QuicDataWriter* writer);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 // Encrypters used to encrypt packets via EncryptPacket(). 529 // Encrypters used to encrypt packets via EncryptPacket().
521 scoped_ptr<QuicEncrypter> encrypter_[NUM_ENCRYPTION_LEVELS]; 530 scoped_ptr<QuicEncrypter> encrypter_[NUM_ENCRYPTION_LEVELS];
522 // Tracks if the framer is being used by the entity that received the 531 // Tracks if the framer is being used by the entity that received the
523 // connection or the entity that initiated it. 532 // connection or the entity that initiated it.
524 bool is_server_; 533 bool is_server_;
525 // If false, skip validation that the public flags are set to legal values. 534 // If false, skip validation that the public flags are set to legal values.
526 bool validate_flags_; 535 bool validate_flags_;
527 // The time this framer was created. Time written to the wire will be 536 // The time this framer was created. Time written to the wire will be
528 // written as a delta from this value. 537 // written as a delta from this value.
529 QuicTime creation_time_; 538 QuicTime creation_time_;
539 // The time delta computed for the last timestamp frame. This is relative to
540 // the creation_time.
541 QuicTime::Delta last_timestamp_;
530 542
531 DISALLOW_COPY_AND_ASSIGN(QuicFramer); 543 DISALLOW_COPY_AND_ASSIGN(QuicFramer);
532 }; 544 };
533 545
534 } // namespace net 546 } // namespace net
535 547
536 #endif // NET_QUIC_QUIC_FRAMER_H_ 548 #endif // NET_QUIC_QUIC_FRAMER_H_
OLDNEW
« no previous file with comments | « net/quic/quic_connection_test.cc ('k') | net/quic/quic_framer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698