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

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

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months 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/quic_flags.cc ('k') | net/quic/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 <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 QuicSequenceNumberLength sequence_number_length); 294 QuicSequenceNumberLength sequence_number_length);
295 295
296 // Returns the associated data from the encrypted packet |encrypted| as a 296 // Returns the associated data from the encrypted packet |encrypted| as a
297 // stringpiece. 297 // stringpiece.
298 static base::StringPiece GetAssociatedDataFromEncryptedPacket( 298 static base::StringPiece GetAssociatedDataFromEncryptedPacket(
299 const QuicEncryptedPacket& encrypted, 299 const QuicEncryptedPacket& encrypted,
300 QuicConnectionIdLength connection_id_length, 300 QuicConnectionIdLength connection_id_length,
301 bool includes_version, 301 bool includes_version,
302 QuicSequenceNumberLength sequence_number_length); 302 QuicSequenceNumberLength sequence_number_length);
303 303
304 // Returns a SerializedPacket whose |packet| member is owned by the caller, 304 // Returns a QuicPacket* that is owned by the caller, is created from
305 // is created from the first |num_frames| frames, or is nullptr if the packet 305 // |frames|. Returns nullptr if the packet could not be created.
306 // could not be created. The packet must be of size |packet_size|. 306 // The packet must be of size |packet_size|.
307 SerializedPacket BuildDataPacket(const QuicPacketHeader& header, 307 QuicPacket* BuildDataPacket(const QuicPacketHeader& header,
308 const QuicFrames& frames, 308 const QuicFrames& frames,
309 size_t packet_size); 309 char* buffer,
310 size_t packet_length);
310 311
311 // Returns a SerializedPacket whose |packet| member is owned by the caller, 312 // Returns a QuicPacket* that is owned by the caller, and is populated with
312 // and is populated with the fields in |header| and |fec|, or is nullptr if 313 // the fields in |header| and |fec|. Returns nullptr if the packet could
313 // the packet could not be created. 314 // not be created.
314 SerializedPacket BuildFecPacket(const QuicPacketHeader& header, 315 QuicPacket* BuildFecPacket(const QuicPacketHeader& header,
315 const QuicFecData& fec); 316 const QuicFecData& fec);
316 317
317 // Returns a new public reset packet, owned by the caller. 318 // Returns a new public reset packet, owned by the caller.
318 static QuicEncryptedPacket* BuildPublicResetPacket( 319 static QuicEncryptedPacket* BuildPublicResetPacket(
319 const QuicPublicResetPacket& packet); 320 const QuicPublicResetPacket& packet);
320 321
321 QuicEncryptedPacket* BuildVersionNegotiationPacket( 322 QuicEncryptedPacket* BuildVersionNegotiationPacket(
322 const QuicPacketPublicHeader& header, 323 const QuicPacketPublicHeader& header,
323 const QuicVersionVector& supported_versions); 324 const QuicVersionVector& supported_versions);
324 325
325 // SetDecrypter sets the primary decrypter, replacing any that already exists, 326 // SetDecrypter sets the primary decrypter, replacing any that already exists,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 365
365 void SetSupportedVersions(const QuicVersionVector& versions) { 366 void SetSupportedVersions(const QuicVersionVector& versions) {
366 supported_versions_ = versions; 367 supported_versions_ = versions;
367 quic_version_ = versions[0]; 368 quic_version_ = versions[0];
368 } 369 }
369 370
370 void set_validate_flags(bool value) { validate_flags_ = value; } 371 void set_validate_flags(bool value) { validate_flags_ = value; }
371 372
372 bool is_server() const { return is_server_; } 373 bool is_server() const { return is_server_; }
373 374
375 static QuicPacketEntropyHash GetPacketEntropyHash(
376 const QuicPacketHeader& header);
377
374 private: 378 private:
375 friend class test::QuicFramerPeer; 379 friend class test::QuicFramerPeer;
376 380
377 typedef std::map<QuicPacketSequenceNumber, uint8> NackRangeMap; 381 typedef std::map<QuicPacketSequenceNumber, uint8> NackRangeMap;
378 382
379 struct AckFrameInfo { 383 struct AckFrameInfo {
380 AckFrameInfo(); 384 AckFrameInfo();
381 ~AckFrameInfo(); 385 ~AckFrameInfo();
382 386
383 // The maximum delta between ranges. 387 // The maximum delta between ranges.
384 QuicPacketSequenceNumber max_delta; 388 QuicPacketSequenceNumber max_delta;
385 // Nack ranges starting with start sequence numbers and lengths. 389 // Nack ranges starting with start sequence numbers and lengths.
386 NackRangeMap nack_ranges; 390 NackRangeMap nack_ranges;
387 }; 391 };
388 392
389 QuicPacketEntropyHash GetPacketEntropyHash(
390 const QuicPacketHeader& header) const;
391
392 bool ProcessDataPacket(const QuicPacketPublicHeader& public_header, 393 bool ProcessDataPacket(const QuicPacketPublicHeader& public_header,
393 const QuicEncryptedPacket& packet); 394 const QuicEncryptedPacket& packet,
395 char* decrypted_buffer,
396 size_t buffer_length);
394 397
395 bool ProcessPublicResetPacket(const QuicPacketPublicHeader& public_header); 398 bool ProcessPublicResetPacket(const QuicPacketPublicHeader& public_header);
396 399
397 bool ProcessVersionNegotiationPacket(QuicPacketPublicHeader* public_header); 400 bool ProcessVersionNegotiationPacket(QuicPacketPublicHeader* public_header);
398 401
399 bool ProcessPublicHeader(QuicPacketPublicHeader* header); 402 bool ProcessPublicHeader(QuicPacketPublicHeader* header);
400 403
404 // |decrypted_buffer| must be allocated to be large enough to hold the
405 // unencrypted contents of |packet|.
401 bool ProcessPacketHeader(QuicPacketHeader* header, 406 bool ProcessPacketHeader(QuicPacketHeader* header,
402 const QuicEncryptedPacket& packet); 407 const QuicEncryptedPacket& packet,
408 char* decrypted_buffer,
409 size_t buffer_length);
403 410
404 bool ProcessPacketSequenceNumber( 411 bool ProcessPacketSequenceNumber(
405 QuicSequenceNumberLength sequence_number_length, 412 QuicSequenceNumberLength sequence_number_length,
406 QuicPacketSequenceNumber* sequence_number); 413 QuicPacketSequenceNumber* sequence_number);
407 bool ProcessFrameData(const QuicPacketHeader& header); 414 bool ProcessFrameData(const QuicPacketHeader& header);
408 bool ProcessStreamFrame(uint8 frame_type, QuicStreamFrame* frame); 415 bool ProcessStreamFrame(uint8 frame_type, QuicStreamFrame* frame);
409 bool ProcessAckFrame(uint8 frame_type, QuicAckFrame* frame); 416 bool ProcessAckFrame(uint8 frame_type, QuicAckFrame* frame);
410 bool ProcessTimestampsInAckFrame(QuicAckFrame* frame); 417 bool ProcessTimestampsInAckFrame(QuicAckFrame* frame);
411 bool ProcessStopWaitingFrame(const QuicPacketHeader& public_header, 418 bool ProcessStopWaitingFrame(const QuicPacketHeader& public_header,
412 QuicStopWaitingFrame* stop_waiting); 419 QuicStopWaitingFrame* stop_waiting);
413 bool ProcessRstStreamFrame(QuicRstStreamFrame* frame); 420 bool ProcessRstStreamFrame(QuicRstStreamFrame* frame);
414 bool ProcessConnectionCloseFrame(QuicConnectionCloseFrame* frame); 421 bool ProcessConnectionCloseFrame(QuicConnectionCloseFrame* frame);
415 bool ProcessGoAwayFrame(QuicGoAwayFrame* frame); 422 bool ProcessGoAwayFrame(QuicGoAwayFrame* frame);
416 bool ProcessWindowUpdateFrame(QuicWindowUpdateFrame* frame); 423 bool ProcessWindowUpdateFrame(QuicWindowUpdateFrame* frame);
417 bool ProcessBlockedFrame(QuicBlockedFrame* frame); 424 bool ProcessBlockedFrame(QuicBlockedFrame* frame);
418 425
419 bool DecryptPayload(const QuicPacketHeader& header, 426 bool DecryptPayload(const QuicPacketHeader& header,
420 const QuicEncryptedPacket& packet); 427 const QuicEncryptedPacket& packet,
428 char* decrypted_buffer,
429 size_t buffer_length);
421 430
422 // Returns the full packet sequence number from the truncated 431 // Returns the full packet sequence number from the truncated
423 // wire format version and the last seen packet sequence number. 432 // wire format version and the last seen packet sequence number.
424 QuicPacketSequenceNumber CalculatePacketSequenceNumberFromWire( 433 QuicPacketSequenceNumber CalculatePacketSequenceNumberFromWire(
425 QuicSequenceNumberLength sequence_number_length, 434 QuicSequenceNumberLength sequence_number_length,
426 QuicPacketSequenceNumber packet_sequence_number) const; 435 QuicPacketSequenceNumber packet_sequence_number) const;
427 436
428 // Returns the QuicTime::Delta corresponding to the time from when the framer 437 // Returns the QuicTime::Delta corresponding to the time from when the framer
429 // was created. 438 // was created.
430 const QuicTime::Delta CalculateTimestampFromWire(uint32 time_delta_us); 439 const QuicTime::Delta CalculateTimestampFromWire(uint32 time_delta_us);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 std::string detailed_error_; 499 std::string detailed_error_;
491 scoped_ptr<QuicDataReader> reader_; 500 scoped_ptr<QuicDataReader> reader_;
492 QuicFramerVisitorInterface* visitor_; 501 QuicFramerVisitorInterface* visitor_;
493 QuicFecBuilderInterface* fec_builder_; 502 QuicFecBuilderInterface* fec_builder_;
494 QuicReceivedEntropyHashCalculatorInterface* entropy_calculator_; 503 QuicReceivedEntropyHashCalculatorInterface* entropy_calculator_;
495 QuicErrorCode error_; 504 QuicErrorCode error_;
496 // Updated by ProcessPacketHeader when it succeeds. 505 // Updated by ProcessPacketHeader when it succeeds.
497 QuicPacketSequenceNumber last_sequence_number_; 506 QuicPacketSequenceNumber last_sequence_number_;
498 // Updated by WritePacketHeader. 507 // Updated by WritePacketHeader.
499 QuicConnectionId last_serialized_connection_id_; 508 QuicConnectionId last_serialized_connection_id_;
500 // Buffer containing decrypted payload data during parsing.
501 scoped_ptr<QuicData> decrypted_;
502 // Version of the protocol being used. 509 // Version of the protocol being used.
503 QuicVersion quic_version_; 510 QuicVersion quic_version_;
504 // This vector contains QUIC versions which we currently support. 511 // This vector contains QUIC versions which we currently support.
505 // This should be ordered such that the highest supported version is the first 512 // This should be ordered such that the highest supported version is the first
506 // element, with subsequent elements in descending order (versions can be 513 // element, with subsequent elements in descending order (versions can be
507 // skipped as necessary). 514 // skipped as necessary).
508 QuicVersionVector supported_versions_; 515 QuicVersionVector supported_versions_;
509 // Primary decrypter used to decrypt packets during parsing. 516 // Primary decrypter used to decrypt packets during parsing.
510 scoped_ptr<QuicDecrypter> decrypter_; 517 scoped_ptr<QuicDecrypter> decrypter_;
511 // Alternative decrypter that can also be used to decrypt packets. 518 // Alternative decrypter that can also be used to decrypt packets.
(...skipping 19 matching lines...) Expand all
531 // The time delta computed for the last timestamp frame. This is relative to 538 // The time delta computed for the last timestamp frame. This is relative to
532 // the creation_time. 539 // the creation_time.
533 QuicTime::Delta last_timestamp_; 540 QuicTime::Delta last_timestamp_;
534 541
535 DISALLOW_COPY_AND_ASSIGN(QuicFramer); 542 DISALLOW_COPY_AND_ASSIGN(QuicFramer);
536 }; 543 };
537 544
538 } // namespace net 545 } // namespace net
539 546
540 #endif // NET_QUIC_QUIC_FRAMER_H_ 547 #endif // NET_QUIC_QUIC_FRAMER_H_
OLDNEW
« no previous file with comments | « net/quic/quic_flags.cc ('k') | net/quic/quic_framer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698