| 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 #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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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_ |
| OLD | NEW |