| 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 <stddef.h> |
| 9 #include <stdint.h> |
| 10 |
| 8 #include <string> | 11 #include <string> |
| 9 #include <vector> | 12 #include <vector> |
| 10 | 13 |
| 11 #include "base/basictypes.h" | |
| 12 #include "base/logging.h" | 14 #include "base/logging.h" |
| 15 #include "base/macros.h" |
| 13 #include "base/memory/scoped_ptr.h" | 16 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/strings/string_piece.h" | 17 #include "base/strings/string_piece.h" |
| 15 #include "net/base/net_export.h" | 18 #include "net/base/net_export.h" |
| 16 #include "net/quic/quic_protocol.h" | 19 #include "net/quic/quic_protocol.h" |
| 17 | 20 |
| 18 namespace net { | 21 namespace net { |
| 19 | 22 |
| 20 namespace test { | 23 namespace test { |
| 21 class QuicFramerPeer; | 24 class QuicFramerPeer; |
| 22 } // namespace test | 25 } // namespace test |
| (...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 void set_validate_flags(bool value) { validate_flags_ = value; } | 353 void set_validate_flags(bool value) { validate_flags_ = value; } |
| 351 | 354 |
| 352 Perspective perspective() const { return perspective_; } | 355 Perspective perspective() const { return perspective_; } |
| 353 | 356 |
| 354 static QuicPacketEntropyHash GetPacketEntropyHash( | 357 static QuicPacketEntropyHash GetPacketEntropyHash( |
| 355 const QuicPacketHeader& header); | 358 const QuicPacketHeader& header); |
| 356 | 359 |
| 357 private: | 360 private: |
| 358 friend class test::QuicFramerPeer; | 361 friend class test::QuicFramerPeer; |
| 359 | 362 |
| 360 typedef std::map<QuicPacketNumber, uint8> NackRangeMap; | 363 typedef std::map<QuicPacketNumber, uint8_t> NackRangeMap; |
| 361 | 364 |
| 362 struct AckFrameInfo { | 365 struct AckFrameInfo { |
| 363 AckFrameInfo(); | 366 AckFrameInfo(); |
| 364 ~AckFrameInfo(); | 367 ~AckFrameInfo(); |
| 365 | 368 |
| 366 // The maximum delta between ranges. | 369 // The maximum delta between ranges. |
| 367 QuicPacketNumber max_delta; | 370 QuicPacketNumber max_delta; |
| 368 // Nack ranges starting with start packet numbers and lengths. | 371 // Nack ranges starting with start packet numbers and lengths. |
| 369 NackRangeMap nack_ranges; | 372 NackRangeMap nack_ranges; |
| 370 }; | 373 }; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 393 // the current QuicDataReader. Returns true on success, false on failure. | 396 // the current QuicDataReader. Returns true on success, false on failure. |
| 394 bool ProcessAuthenticatedHeader(QuicDataReader* reader, | 397 bool ProcessAuthenticatedHeader(QuicDataReader* reader, |
| 395 QuicPacketHeader* header); | 398 QuicPacketHeader* header); |
| 396 | 399 |
| 397 bool ProcessPathId(QuicDataReader* reader, QuicPathId* path_id); | 400 bool ProcessPathId(QuicDataReader* reader, QuicPathId* path_id); |
| 398 bool ProcessPacketSequenceNumber(QuicDataReader* reader, | 401 bool ProcessPacketSequenceNumber(QuicDataReader* reader, |
| 399 QuicPacketNumberLength packet_number_length, | 402 QuicPacketNumberLength packet_number_length, |
| 400 QuicPacketNumber* packet_number); | 403 QuicPacketNumber* packet_number); |
| 401 bool ProcessFrameData(QuicDataReader* reader, const QuicPacketHeader& header); | 404 bool ProcessFrameData(QuicDataReader* reader, const QuicPacketHeader& header); |
| 402 bool ProcessStreamFrame(QuicDataReader* reader, | 405 bool ProcessStreamFrame(QuicDataReader* reader, |
| 403 uint8 frame_type, | 406 uint8_t frame_type, |
| 404 QuicStreamFrame* frame); | 407 QuicStreamFrame* frame); |
| 405 bool ProcessAckFrame(QuicDataReader* reader, | 408 bool ProcessAckFrame(QuicDataReader* reader, |
| 406 uint8 frame_type, | 409 uint8_t frame_type, |
| 407 QuicAckFrame* frame); | 410 QuicAckFrame* frame); |
| 408 bool ProcessTimestampsInAckFrame(QuicDataReader* reader, QuicAckFrame* frame); | 411 bool ProcessTimestampsInAckFrame(QuicDataReader* reader, QuicAckFrame* frame); |
| 409 bool ProcessStopWaitingFrame(QuicDataReader* reader, | 412 bool ProcessStopWaitingFrame(QuicDataReader* reader, |
| 410 const QuicPacketHeader& public_header, | 413 const QuicPacketHeader& public_header, |
| 411 QuicStopWaitingFrame* stop_waiting); | 414 QuicStopWaitingFrame* stop_waiting); |
| 412 bool ProcessRstStreamFrame(QuicDataReader* reader, QuicRstStreamFrame* frame); | 415 bool ProcessRstStreamFrame(QuicDataReader* reader, QuicRstStreamFrame* frame); |
| 413 bool ProcessConnectionCloseFrame(QuicDataReader* reader, | 416 bool ProcessConnectionCloseFrame(QuicDataReader* reader, |
| 414 QuicConnectionCloseFrame* frame); | 417 QuicConnectionCloseFrame* frame); |
| 415 bool ProcessGoAwayFrame(QuicDataReader* reader, QuicGoAwayFrame* frame); | 418 bool ProcessGoAwayFrame(QuicDataReader* reader, QuicGoAwayFrame* frame); |
| 416 bool ProcessWindowUpdateFrame(QuicDataReader* reader, | 419 bool ProcessWindowUpdateFrame(QuicDataReader* reader, |
| 417 QuicWindowUpdateFrame* frame); | 420 QuicWindowUpdateFrame* frame); |
| 418 bool ProcessBlockedFrame(QuicDataReader* reader, QuicBlockedFrame* frame); | 421 bool ProcessBlockedFrame(QuicDataReader* reader, QuicBlockedFrame* frame); |
| 419 | 422 |
| 420 bool DecryptPayload(QuicDataReader* encrypted_reader, | 423 bool DecryptPayload(QuicDataReader* encrypted_reader, |
| 421 const QuicPacketHeader& header, | 424 const QuicPacketHeader& header, |
| 422 const QuicEncryptedPacket& packet, | 425 const QuicEncryptedPacket& packet, |
| 423 char* decrypted_buffer, | 426 char* decrypted_buffer, |
| 424 size_t buffer_length, | 427 size_t buffer_length, |
| 425 size_t* decrypted_length); | 428 size_t* decrypted_length); |
| 426 | 429 |
| 427 // Returns the full packet number from the truncated | 430 // Returns the full packet number from the truncated |
| 428 // wire format version and the last seen packet number. | 431 // wire format version and the last seen packet number. |
| 429 QuicPacketNumber CalculatePacketNumberFromWire( | 432 QuicPacketNumber CalculatePacketNumberFromWire( |
| 430 QuicPacketNumberLength packet_number_length, | 433 QuicPacketNumberLength packet_number_length, |
| 431 QuicPacketNumber packet_number) const; | 434 QuicPacketNumber packet_number) const; |
| 432 | 435 |
| 433 // Returns the QuicTime::Delta corresponding to the time from when the framer | 436 // Returns the QuicTime::Delta corresponding to the time from when the framer |
| 434 // was created. | 437 // was created. |
| 435 const QuicTime::Delta CalculateTimestampFromWire(uint32 time_delta_us); | 438 const QuicTime::Delta CalculateTimestampFromWire(uint32_t time_delta_us); |
| 436 | 439 |
| 437 // Computes the wire size in bytes of the |ack| frame, assuming no truncation. | 440 // Computes the wire size in bytes of the |ack| frame, assuming no truncation. |
| 438 size_t GetAckFrameSize(const QuicAckFrame& ack, | 441 size_t GetAckFrameSize(const QuicAckFrame& ack, |
| 439 QuicPacketNumberLength packet_number_length); | 442 QuicPacketNumberLength packet_number_length); |
| 440 | 443 |
| 441 // Computes the wire size in bytes of the payload of |frame|. | 444 // Computes the wire size in bytes of the payload of |frame|. |
| 442 size_t ComputeFrameLength(const QuicFrame& frame, | 445 size_t ComputeFrameLength(const QuicFrame& frame, |
| 443 bool last_frame_in_packet, | 446 bool last_frame_in_packet, |
| 444 InFecGroup is_in_fec_group, | 447 InFecGroup is_in_fec_group, |
| 445 QuicPacketNumberLength packet_number_length); | 448 QuicPacketNumberLength packet_number_length); |
| 446 | 449 |
| 447 static bool AppendPacketSequenceNumber( | 450 static bool AppendPacketSequenceNumber( |
| 448 QuicPacketNumberLength packet_number_length, | 451 QuicPacketNumberLength packet_number_length, |
| 449 QuicPacketNumber packet_number, | 452 QuicPacketNumber packet_number, |
| 450 QuicDataWriter* writer); | 453 QuicDataWriter* writer); |
| 451 | 454 |
| 452 static uint8 GetSequenceNumberFlags( | 455 static uint8_t GetSequenceNumberFlags( |
| 453 QuicPacketNumberLength packet_number_length); | 456 QuicPacketNumberLength packet_number_length); |
| 454 | 457 |
| 455 static AckFrameInfo GetAckFrameInfo(const QuicAckFrame& frame); | 458 static AckFrameInfo GetAckFrameInfo(const QuicAckFrame& frame); |
| 456 | 459 |
| 457 // The Append* methods attempt to write the provided header or frame using the | 460 // The Append* methods attempt to write the provided header or frame using the |
| 458 // |writer|, and return true if successful. | 461 // |writer|, and return true if successful. |
| 459 | 462 |
| 460 // If header.public_header.version_flag is set, the version in the | 463 // If header.public_header.version_flag is set, the version in the |
| 461 // packet will be set -- but it will be set from quic_version_ not | 464 // packet will be set -- but it will be set from quic_version_ not |
| 462 // header.public_header.versions. | 465 // header.public_header.versions. |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 532 // The time delta computed for the last timestamp frame. This is relative to | 535 // The time delta computed for the last timestamp frame. This is relative to |
| 533 // the creation_time. | 536 // the creation_time. |
| 534 QuicTime::Delta last_timestamp_; | 537 QuicTime::Delta last_timestamp_; |
| 535 | 538 |
| 536 DISALLOW_COPY_AND_ASSIGN(QuicFramer); | 539 DISALLOW_COPY_AND_ASSIGN(QuicFramer); |
| 537 }; | 540 }; |
| 538 | 541 |
| 539 } // namespace net | 542 } // namespace net |
| 540 | 543 |
| 541 #endif // NET_QUIC_QUIC_FRAMER_H_ | 544 #endif // NET_QUIC_QUIC_FRAMER_H_ |
| OLD | NEW |