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_CORE_QUIC_FRAMER_H_ | 5 #ifndef NET_QUIC_CORE_QUIC_FRAMER_H_ |
6 #define NET_QUIC_CORE_QUIC_FRAMER_H_ | 6 #define NET_QUIC_CORE_QUIC_FRAMER_H_ |
7 | 7 |
8 #include <cstddef> | 8 #include <cstddef> |
9 #include <cstdint> | 9 #include <cstdint> |
10 #include <memory> | 10 #include <memory> |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 char* buffer, | 305 char* buffer, |
306 size_t buffer_len); | 306 size_t buffer_len); |
307 | 307 |
308 // Returns the maximum length of plaintext that can be encrypted | 308 // Returns the maximum length of plaintext that can be encrypted |
309 // to ciphertext no larger than |ciphertext_size|. | 309 // to ciphertext no larger than |ciphertext_size|. |
310 size_t GetMaxPlaintextSize(size_t ciphertext_size); | 310 size_t GetMaxPlaintextSize(size_t ciphertext_size); |
311 | 311 |
312 const std::string& detailed_error() { return detailed_error_; } | 312 const std::string& detailed_error() { return detailed_error_; } |
313 | 313 |
314 // The minimum packet number length required to represent |packet_number|. | 314 // The minimum packet number length required to represent |packet_number|. |
315 static QuicPacketNumberLength GetMinSequenceNumberLength( | 315 static QuicPacketNumberLength GetMinPacketNumberLength( |
316 QuicPacketNumber packet_number); | 316 QuicPacketNumber packet_number); |
317 | 317 |
318 void SetSupportedVersions(const QuicVersionVector& versions) { | 318 void SetSupportedVersions(const QuicVersionVector& versions) { |
319 supported_versions_ = versions; | 319 supported_versions_ = versions; |
320 quic_version_ = versions[0]; | 320 quic_version_ = versions[0]; |
321 } | 321 } |
322 | 322 |
323 void set_validate_flags(bool value) { validate_flags_ = value; } | 323 void set_validate_flags(bool value) { validate_flags_ = value; } |
324 | 324 |
325 Perspective perspective() const { return perspective_; } | 325 Perspective perspective() const { return perspective_; } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 QuicPacketPublicHeader* public_header); | 357 QuicPacketPublicHeader* public_header); |
358 | 358 |
359 bool ProcessPublicHeader(QuicDataReader* reader, | 359 bool ProcessPublicHeader(QuicDataReader* reader, |
360 QuicPacketPublicHeader* header); | 360 QuicPacketPublicHeader* header); |
361 | 361 |
362 // Processes the unauthenticated portion of the header into |header| from | 362 // Processes the unauthenticated portion of the header into |header| from |
363 // the current QuicDataReader. Returns true on success, false on failure. | 363 // the current QuicDataReader. Returns true on success, false on failure. |
364 bool ProcessUnauthenticatedHeader(QuicDataReader* encrypted_reader, | 364 bool ProcessUnauthenticatedHeader(QuicDataReader* encrypted_reader, |
365 QuicPacketHeader* header); | 365 QuicPacketHeader* header); |
366 | 366 |
367 bool ProcessPacketSequenceNumber(QuicDataReader* reader, | 367 // First processes possibly truncated packet number. Calculates the full |
368 QuicPacketNumberLength packet_number_length, | 368 // packet number from the truncated one and the last seen packet number, and |
369 QuicPacketNumber base_packet_number, | 369 // stores it to |packet_number|. |
370 QuicPacketNumber* packet_number); | 370 bool ProcessAndCalculatePacketNumber( |
| 371 QuicDataReader* reader, |
| 372 QuicPacketNumberLength packet_number_length, |
| 373 QuicPacketNumber base_packet_number, |
| 374 QuicPacketNumber* packet_number); |
371 bool ProcessFrameData(QuicDataReader* reader, const QuicPacketHeader& header); | 375 bool ProcessFrameData(QuicDataReader* reader, const QuicPacketHeader& header); |
372 bool ProcessStreamFrame(QuicDataReader* reader, | 376 bool ProcessStreamFrame(QuicDataReader* reader, |
373 uint8_t frame_type, | 377 uint8_t frame_type, |
374 QuicStreamFrame* frame); | 378 QuicStreamFrame* frame); |
375 bool ProcessAckFrame(QuicDataReader* reader, | 379 bool ProcessAckFrame(QuicDataReader* reader, |
376 uint8_t frame_type, | 380 uint8_t frame_type, |
377 QuicAckFrame* frame); | 381 QuicAckFrame* frame); |
378 bool ProcessTimestampsInAckFrame(QuicDataReader* reader, QuicAckFrame* frame); | 382 bool ProcessTimestampsInAckFrame(QuicDataReader* reader, QuicAckFrame* frame); |
379 bool ProcessStopWaitingFrame(QuicDataReader* reader, | 383 bool ProcessStopWaitingFrame(QuicDataReader* reader, |
380 const QuicPacketHeader& public_header, | 384 const QuicPacketHeader& public_header, |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 QuicPacketNumberLength packet_number_length); | 422 QuicPacketNumberLength packet_number_length); |
419 | 423 |
420 // Computes the wire size in bytes of the |ack| frame. | 424 // Computes the wire size in bytes of the |ack| frame. |
421 size_t GetAckFrameSize(const QuicAckFrame& ack); | 425 size_t GetAckFrameSize(const QuicAckFrame& ack); |
422 | 426 |
423 // Computes the wire size in bytes of the payload of |frame|. | 427 // Computes the wire size in bytes of the payload of |frame|. |
424 size_t ComputeFrameLength(const QuicFrame& frame, | 428 size_t ComputeFrameLength(const QuicFrame& frame, |
425 bool last_frame_in_packet, | 429 bool last_frame_in_packet, |
426 QuicPacketNumberLength packet_number_length); | 430 QuicPacketNumberLength packet_number_length); |
427 | 431 |
428 static bool AppendPacketSequenceNumber( | 432 static bool AppendPacketNumber(QuicPacketNumberLength packet_number_length, |
429 QuicPacketNumberLength packet_number_length, | 433 QuicPacketNumber packet_number, |
430 QuicPacketNumber packet_number, | 434 QuicDataWriter* writer); |
431 QuicDataWriter* writer); | 435 static bool AppendStreamId(size_t stream_id_length, |
| 436 QuicStreamId stream_id, |
| 437 QuicDataWriter* writer); |
| 438 static bool AppendStreamOffset(size_t offset_length, |
| 439 QuicStreamOffset offset, |
| 440 QuicDataWriter* writer); |
432 | 441 |
433 // Appends a single ACK block to |writer| and returns true if the block was | 442 // Appends a single ACK block to |writer| and returns true if the block was |
434 // successfully appended. | 443 // successfully appended. |
435 static bool AppendAckBlock(uint8_t gap, | 444 static bool AppendAckBlock(uint8_t gap, |
436 QuicPacketNumberLength length_length, | 445 QuicPacketNumberLength length_length, |
437 QuicPacketNumber length, | 446 QuicPacketNumber length, |
438 QuicDataWriter* writer); | 447 QuicDataWriter* writer); |
439 | 448 |
440 static uint8_t GetSequenceNumberFlags( | 449 static uint8_t GetPacketNumberFlags( |
441 QuicPacketNumberLength packet_number_length); | 450 QuicPacketNumberLength packet_number_length); |
442 | 451 |
443 static AckFrameInfo GetAckFrameInfo(const QuicAckFrame& frame); | 452 static AckFrameInfo GetAckFrameInfo(const QuicAckFrame& frame); |
444 | 453 |
445 // The Append* methods attempt to write the provided header or frame using the | 454 // The Append* methods attempt to write the provided header or frame using the |
446 // |writer|, and return true if successful. | 455 // |writer|, and return true if successful. |
447 | 456 |
448 bool AppendAckFrameAndTypeByte(const QuicAckFrame& frame, | 457 bool AppendAckFrameAndTypeByte(const QuicAckFrame& frame, |
449 QuicDataWriter* builder); | 458 QuicDataWriter* builder); |
450 bool AppendTimestampToAckFrame(const QuicAckFrame& frame, | 459 bool AppendTimestampToAckFrame(const QuicAckFrame& frame, |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 QuicTime::Delta last_timestamp_; | 524 QuicTime::Delta last_timestamp_; |
516 // The diversification nonce from the last received packet. | 525 // The diversification nonce from the last received packet. |
517 DiversificationNonce last_nonce_; | 526 DiversificationNonce last_nonce_; |
518 | 527 |
519 DISALLOW_COPY_AND_ASSIGN(QuicFramer); | 528 DISALLOW_COPY_AND_ASSIGN(QuicFramer); |
520 }; | 529 }; |
521 | 530 |
522 } // namespace net | 531 } // namespace net |
523 | 532 |
524 #endif // NET_QUIC_CORE_QUIC_FRAMER_H_ | 533 #endif // NET_QUIC_CORE_QUIC_FRAMER_H_ |
OLD | NEW |