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

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

Issue 2547583002: Landing Recent QUIC changes until Fri Nov 18 23:21:04 2016 +0000 (Closed)
Patch Set: Remove explicit HTTP/2 enum usage Created 4 years 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_frame_list.h ('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_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> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <memory> 11 #include <memory>
12 #include <string> 12 #include <string>
13 #include <unordered_map> 13 #include <unordered_map>
14 #include <unordered_set> 14 #include <unordered_set>
15 #include <vector> 15 #include <vector>
16 16
17 #include "base/logging.h" 17 #include "base/logging.h"
18 #include "base/macros.h" 18 #include "base/macros.h"
19 #include "base/strings/string_piece.h" 19 #include "base/strings/string_piece.h"
20 #include "net/base/net_export.h" 20 #include "net/base/net_export.h"
21 #include "net/quic/core/quic_protocol.h" 21 #include "net/quic/core/quic_packets.h"
22 22
23 namespace net { 23 namespace net {
24 24
25 namespace test { 25 namespace test {
26 class QuicFramerPeer; 26 class QuicFramerPeer;
27 } // namespace test 27 } // namespace test
28 28
29 class QuicDataReader; 29 class QuicDataReader;
30 class QuicDataWriter; 30 class QuicDataWriter;
31 class QuicDecrypter; 31 class QuicDecrypter;
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 // Called when a PATH_CLOSED frame has been sent/received on |path_id|. 340 // Called when a PATH_CLOSED frame has been sent/received on |path_id|.
341 void OnPathClosed(QuicPathId path_id); 341 void OnPathClosed(QuicPathId path_id);
342 342
343 QuicTag last_version_tag() { return last_version_tag_; } 343 QuicTag last_version_tag() { return last_version_tag_; }
344 344
345 private: 345 private:
346 friend class test::QuicFramerPeer; 346 friend class test::QuicFramerPeer;
347 347
348 typedef std::map<QuicPacketNumber, uint8_t> NackRangeMap; 348 typedef std::map<QuicPacketNumber, uint8_t> NackRangeMap;
349 349
350 // TODO(rch): Rename this to remove "New" from the name here, and elsewhere. 350 struct AckFrameInfo {
351 struct NewAckFrameInfo { 351 AckFrameInfo();
352 NewAckFrameInfo(); 352 AckFrameInfo(const AckFrameInfo& other);
353 NewAckFrameInfo(const NewAckFrameInfo& other); 353 ~AckFrameInfo();
354 ~NewAckFrameInfo();
355 354
356 // The maximum ack block length. 355 // The maximum ack block length.
357 QuicPacketNumber max_block_length; 356 QuicPacketNumber max_block_length;
358 // Length of first ack block. 357 // Length of first ack block.
359 QuicPacketNumber first_block_length; 358 QuicPacketNumber first_block_length;
360 // Number of ACK blocks needed for the ACK frame. 359 // Number of ACK blocks needed for the ACK frame.
361 size_t num_ack_blocks; 360 size_t num_ack_blocks;
362 }; 361 };
363 362
364 bool ProcessDataPacket(QuicDataReader* reader, 363 bool ProcessDataPacket(QuicDataReader* reader,
(...skipping 18 matching lines...) Expand all
383 382
384 bool ProcessPathId(QuicDataReader* reader, QuicPathId* path_id); 383 bool ProcessPathId(QuicDataReader* reader, QuicPathId* path_id);
385 bool ProcessPacketSequenceNumber(QuicDataReader* reader, 384 bool ProcessPacketSequenceNumber(QuicDataReader* reader,
386 QuicPacketNumberLength packet_number_length, 385 QuicPacketNumberLength packet_number_length,
387 QuicPacketNumber base_packet_number, 386 QuicPacketNumber base_packet_number,
388 QuicPacketNumber* packet_number); 387 QuicPacketNumber* packet_number);
389 bool ProcessFrameData(QuicDataReader* reader, const QuicPacketHeader& header); 388 bool ProcessFrameData(QuicDataReader* reader, const QuicPacketHeader& header);
390 bool ProcessStreamFrame(QuicDataReader* reader, 389 bool ProcessStreamFrame(QuicDataReader* reader,
391 uint8_t frame_type, 390 uint8_t frame_type,
392 QuicStreamFrame* frame); 391 QuicStreamFrame* frame);
393 bool ProcessNewAckFrame(QuicDataReader* reader, 392 bool ProcessAckFrame(QuicDataReader* reader,
394 uint8_t frame_type, 393 uint8_t frame_type,
395 QuicAckFrame* frame); 394 QuicAckFrame* frame);
396 bool ProcessTimestampsInAckFrame(QuicDataReader* reader, QuicAckFrame* frame); 395 bool ProcessTimestampsInAckFrame(QuicDataReader* reader, QuicAckFrame* frame);
397 bool ProcessStopWaitingFrame(QuicDataReader* reader, 396 bool ProcessStopWaitingFrame(QuicDataReader* reader,
398 const QuicPacketHeader& public_header, 397 const QuicPacketHeader& public_header,
399 QuicStopWaitingFrame* stop_waiting); 398 QuicStopWaitingFrame* stop_waiting);
400 bool ProcessRstStreamFrame(QuicDataReader* reader, QuicRstStreamFrame* frame); 399 bool ProcessRstStreamFrame(QuicDataReader* reader, QuicRstStreamFrame* frame);
401 bool ProcessConnectionCloseFrame(QuicDataReader* reader, 400 bool ProcessConnectionCloseFrame(QuicDataReader* reader,
402 QuicConnectionCloseFrame* frame); 401 QuicConnectionCloseFrame* frame);
403 bool ProcessGoAwayFrame(QuicDataReader* reader, QuicGoAwayFrame* frame); 402 bool ProcessGoAwayFrame(QuicDataReader* reader, QuicGoAwayFrame* frame);
404 bool ProcessWindowUpdateFrame(QuicDataReader* reader, 403 bool ProcessWindowUpdateFrame(QuicDataReader* reader,
405 QuicWindowUpdateFrame* frame); 404 QuicWindowUpdateFrame* frame);
(...skipping 29 matching lines...) Expand all
435 const QuicTime::Delta CalculateTimestampFromWire(uint32_t time_delta_us); 434 const QuicTime::Delta CalculateTimestampFromWire(uint32_t time_delta_us);
436 435
437 // Computes the wire size in bytes of time stamps in |ack|. 436 // Computes the wire size in bytes of time stamps in |ack|.
438 size_t GetAckFrameTimeStampSize(const QuicAckFrame& ack); 437 size_t GetAckFrameTimeStampSize(const QuicAckFrame& ack);
439 438
440 // Computes the wire size in bytes of the |ack| frame. 439 // Computes the wire size in bytes of the |ack| frame.
441 size_t GetAckFrameSize(const QuicAckFrame& ack, 440 size_t GetAckFrameSize(const QuicAckFrame& ack,
442 QuicPacketNumberLength packet_number_length); 441 QuicPacketNumberLength packet_number_length);
443 442
444 // Computes the wire size in bytes of the |ack| frame. 443 // Computes the wire size in bytes of the |ack| frame.
445 size_t GetNewAckFrameSize(const QuicAckFrame& ack); 444 size_t GetAckFrameSize(const QuicAckFrame& ack);
446 445
447 // Computes the wire size in bytes of the payload of |frame|. 446 // Computes the wire size in bytes of the payload of |frame|.
448 size_t ComputeFrameLength(const QuicFrame& frame, 447 size_t ComputeFrameLength(const QuicFrame& frame,
449 bool last_frame_in_packet, 448 bool last_frame_in_packet,
450 QuicPacketNumberLength packet_number_length); 449 QuicPacketNumberLength packet_number_length);
451 450
452 static bool AppendPacketSequenceNumber( 451 static bool AppendPacketSequenceNumber(
453 QuicPacketNumberLength packet_number_length, 452 QuicPacketNumberLength packet_number_length,
454 QuicPacketNumber packet_number, 453 QuicPacketNumber packet_number,
455 QuicDataWriter* writer); 454 QuicDataWriter* writer);
456 455
457 // Appends a single ACK block to |writer| and returns true if the block was 456 // Appends a single ACK block to |writer| and returns true if the block was
458 // successfully appended. 457 // successfully appended.
459 static bool AppendAckBlock(uint8_t gap, 458 static bool AppendAckBlock(uint8_t gap,
460 QuicPacketNumberLength length_length, 459 QuicPacketNumberLength length_length,
461 QuicPacketNumber length, 460 QuicPacketNumber length,
462 QuicDataWriter* writer); 461 QuicDataWriter* writer);
463 462
464 static uint8_t GetSequenceNumberFlags( 463 static uint8_t GetSequenceNumberFlags(
465 QuicPacketNumberLength packet_number_length); 464 QuicPacketNumberLength packet_number_length);
466 465
467 static NewAckFrameInfo GetNewAckFrameInfo(const QuicAckFrame& frame); 466 static AckFrameInfo GetAckFrameInfo(const QuicAckFrame& frame);
468 467
469 // The Append* methods attempt to write the provided header or frame using the 468 // The Append* methods attempt to write the provided header or frame using the
470 // |writer|, and return true if successful. 469 // |writer|, and return true if successful.
471 470
472 bool AppendNewAckFrameAndTypeByte(const QuicAckFrame& frame, 471 bool AppendAckFrameAndTypeByte(const QuicAckFrame& frame,
473 QuicDataWriter* builder); 472 QuicDataWriter* builder);
474 bool AppendTimestampToAckFrame(const QuicAckFrame& frame, 473 bool AppendTimestampToAckFrame(const QuicAckFrame& frame,
475 QuicDataWriter* builder); 474 QuicDataWriter* builder);
476 bool AppendStopWaitingFrame(const QuicPacketHeader& header, 475 bool AppendStopWaitingFrame(const QuicPacketHeader& header,
477 const QuicStopWaitingFrame& frame, 476 const QuicStopWaitingFrame& frame,
478 QuicDataWriter* builder); 477 QuicDataWriter* builder);
479 bool AppendRstStreamFrame(const QuicRstStreamFrame& frame, 478 bool AppendRstStreamFrame(const QuicRstStreamFrame& frame,
480 QuicDataWriter* builder); 479 QuicDataWriter* builder);
481 bool AppendConnectionCloseFrame(const QuicConnectionCloseFrame& frame, 480 bool AppendConnectionCloseFrame(const QuicConnectionCloseFrame& frame,
482 QuicDataWriter* builder); 481 QuicDataWriter* builder);
483 bool AppendGoAwayFrame(const QuicGoAwayFrame& frame, QuicDataWriter* writer); 482 bool AppendGoAwayFrame(const QuicGoAwayFrame& frame, QuicDataWriter* writer);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 QuicTime::Delta last_timestamp_; 548 QuicTime::Delta last_timestamp_;
550 // The diversification nonce from the last received packet. 549 // The diversification nonce from the last received packet.
551 DiversificationNonce last_nonce_; 550 DiversificationNonce last_nonce_;
552 551
553 DISALLOW_COPY_AND_ASSIGN(QuicFramer); 552 DISALLOW_COPY_AND_ASSIGN(QuicFramer);
554 }; 553 };
555 554
556 } // namespace net 555 } // namespace net
557 556
558 #endif // NET_QUIC_QUIC_FRAMER_H_ 557 #endif // NET_QUIC_QUIC_FRAMER_H_
OLDNEW
« no previous file with comments | « net/quic/core/quic_frame_list.h ('k') | net/quic/core/quic_framer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698