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 |