| 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 |