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 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 | 127 |
128 // Called when a GoAwayFrame has been parsed. | 128 // Called when a GoAwayFrame has been parsed. |
129 virtual bool OnGoAwayFrame(const QuicGoAwayFrame& frame) = 0; | 129 virtual bool OnGoAwayFrame(const QuicGoAwayFrame& frame) = 0; |
130 | 130 |
131 // Called when a WindowUpdateFrame has been parsed. | 131 // Called when a WindowUpdateFrame has been parsed. |
132 virtual bool OnWindowUpdateFrame(const QuicWindowUpdateFrame& frame) = 0; | 132 virtual bool OnWindowUpdateFrame(const QuicWindowUpdateFrame& frame) = 0; |
133 | 133 |
134 // Called when a BlockedFrame has been parsed. | 134 // Called when a BlockedFrame has been parsed. |
135 virtual bool OnBlockedFrame(const QuicBlockedFrame& frame) = 0; | 135 virtual bool OnBlockedFrame(const QuicBlockedFrame& frame) = 0; |
136 | 136 |
137 // Called when a PathCloseFrame has been parsed. | |
138 virtual bool OnPathCloseFrame(const QuicPathCloseFrame& frame) = 0; | |
139 | |
140 // Called when a packet has been completely processed. | 137 // Called when a packet has been completely processed. |
141 virtual void OnPacketComplete() = 0; | 138 virtual void OnPacketComplete() = 0; |
142 }; | 139 }; |
143 | 140 |
144 // Class for parsing and constructing QUIC packets. It has a | 141 // Class for parsing and constructing QUIC packets. It has a |
145 // QuicFramerVisitorInterface that is called when packets are parsed. | 142 // QuicFramerVisitorInterface that is called when packets are parsed. |
146 class QUIC_EXPORT_PRIVATE QuicFramer { | 143 class QUIC_EXPORT_PRIVATE QuicFramer { |
147 public: | 144 public: |
148 // Constructs a new framer that installs a kNULL QuicEncrypter and | 145 // Constructs a new framer that installs a kNULL QuicEncrypter and |
149 // QuicDecrypter for level ENCRYPTION_NONE. |supported_versions| specifies the | 146 // QuicDecrypter for level ENCRYPTION_NONE. |supported_versions| specifies the |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 static size_t GetRstStreamFrameSize(); | 201 static size_t GetRstStreamFrameSize(); |
205 // Size in bytes of all connection close frame fields without the error | 202 // Size in bytes of all connection close frame fields without the error |
206 // details and the missing packets from the enclosed ack frame. | 203 // details and the missing packets from the enclosed ack frame. |
207 static size_t GetMinConnectionCloseFrameSize(); | 204 static size_t GetMinConnectionCloseFrameSize(); |
208 // Size in bytes of all GoAway frame fields without the reason phrase. | 205 // Size in bytes of all GoAway frame fields without the reason phrase. |
209 static size_t GetMinGoAwayFrameSize(); | 206 static size_t GetMinGoAwayFrameSize(); |
210 // Size in bytes of all WindowUpdate frame fields. | 207 // Size in bytes of all WindowUpdate frame fields. |
211 static size_t GetWindowUpdateFrameSize(); | 208 static size_t GetWindowUpdateFrameSize(); |
212 // Size in bytes of all Blocked frame fields. | 209 // Size in bytes of all Blocked frame fields. |
213 static size_t GetBlockedFrameSize(); | 210 static size_t GetBlockedFrameSize(); |
214 // Size in bytes of all PathClose frame fields. | |
215 static size_t GetPathCloseFrameSize(); | |
216 // Size in bytes required to serialize the stream id. | 211 // Size in bytes required to serialize the stream id. |
217 static size_t GetStreamIdSize(QuicStreamId stream_id); | 212 static size_t GetStreamIdSize(QuicStreamId stream_id); |
218 // Size in bytes required to serialize the stream offset. | 213 // Size in bytes required to serialize the stream offset. |
219 static size_t GetStreamOffsetSize(QuicStreamOffset offset); | 214 static size_t GetStreamOffsetSize(QuicStreamOffset offset); |
220 // Size in bytes required for a serialized version negotiation packet | 215 // Size in bytes required for a serialized version negotiation packet |
221 static size_t GetVersionNegotiationPacketSize(size_t number_versions); | 216 static size_t GetVersionNegotiationPacketSize(size_t number_versions); |
222 | 217 |
223 // Returns the number of bytes added to the packet for the specified frame, | 218 // Returns the number of bytes added to the packet for the specified frame, |
224 // and 0 if the frame doesn't fit. Includes the header size for the first | 219 // and 0 if the frame doesn't fit. Includes the header size for the first |
225 // frame. | 220 // frame. |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 bool ProcessStopWaitingFrame(QuicDataReader* reader, | 379 bool ProcessStopWaitingFrame(QuicDataReader* reader, |
385 const QuicPacketHeader& public_header, | 380 const QuicPacketHeader& public_header, |
386 QuicStopWaitingFrame* stop_waiting); | 381 QuicStopWaitingFrame* stop_waiting); |
387 bool ProcessRstStreamFrame(QuicDataReader* reader, QuicRstStreamFrame* frame); | 382 bool ProcessRstStreamFrame(QuicDataReader* reader, QuicRstStreamFrame* frame); |
388 bool ProcessConnectionCloseFrame(QuicDataReader* reader, | 383 bool ProcessConnectionCloseFrame(QuicDataReader* reader, |
389 QuicConnectionCloseFrame* frame); | 384 QuicConnectionCloseFrame* frame); |
390 bool ProcessGoAwayFrame(QuicDataReader* reader, QuicGoAwayFrame* frame); | 385 bool ProcessGoAwayFrame(QuicDataReader* reader, QuicGoAwayFrame* frame); |
391 bool ProcessWindowUpdateFrame(QuicDataReader* reader, | 386 bool ProcessWindowUpdateFrame(QuicDataReader* reader, |
392 QuicWindowUpdateFrame* frame); | 387 QuicWindowUpdateFrame* frame); |
393 bool ProcessBlockedFrame(QuicDataReader* reader, QuicBlockedFrame* frame); | 388 bool ProcessBlockedFrame(QuicDataReader* reader, QuicBlockedFrame* frame); |
394 bool ProcessPathCloseFrame(QuicDataReader* reader, QuicPathCloseFrame* frame); | |
395 | 389 |
396 bool DecryptPayload(QuicDataReader* encrypted_reader, | 390 bool DecryptPayload(QuicDataReader* encrypted_reader, |
397 const QuicPacketHeader& header, | 391 const QuicPacketHeader& header, |
398 const QuicEncryptedPacket& packet, | 392 const QuicEncryptedPacket& packet, |
399 char* decrypted_buffer, | 393 char* decrypted_buffer, |
400 size_t buffer_length, | 394 size_t buffer_length, |
401 size_t* decrypted_length); | 395 size_t* decrypted_length); |
402 | 396 |
403 // Sets last_packet_number_. This can only be called after the packet is | 397 // Sets last_packet_number_. This can only be called after the packet is |
404 // successfully decrypted. | 398 // successfully decrypted. |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 QuicDataWriter* builder); | 453 QuicDataWriter* builder); |
460 bool AppendRstStreamFrame(const QuicRstStreamFrame& frame, | 454 bool AppendRstStreamFrame(const QuicRstStreamFrame& frame, |
461 QuicDataWriter* builder); | 455 QuicDataWriter* builder); |
462 bool AppendConnectionCloseFrame(const QuicConnectionCloseFrame& frame, | 456 bool AppendConnectionCloseFrame(const QuicConnectionCloseFrame& frame, |
463 QuicDataWriter* builder); | 457 QuicDataWriter* builder); |
464 bool AppendGoAwayFrame(const QuicGoAwayFrame& frame, QuicDataWriter* writer); | 458 bool AppendGoAwayFrame(const QuicGoAwayFrame& frame, QuicDataWriter* writer); |
465 bool AppendWindowUpdateFrame(const QuicWindowUpdateFrame& frame, | 459 bool AppendWindowUpdateFrame(const QuicWindowUpdateFrame& frame, |
466 QuicDataWriter* writer); | 460 QuicDataWriter* writer); |
467 bool AppendBlockedFrame(const QuicBlockedFrame& frame, | 461 bool AppendBlockedFrame(const QuicBlockedFrame& frame, |
468 QuicDataWriter* writer); | 462 QuicDataWriter* writer); |
469 bool AppendPathCloseFrame(const QuicPathCloseFrame& frame, | |
470 QuicDataWriter* writer); | |
471 | 463 |
472 bool RaiseError(QuicErrorCode error); | 464 bool RaiseError(QuicErrorCode error); |
473 | 465 |
474 void set_error(QuicErrorCode error) { error_ = error; } | 466 void set_error(QuicErrorCode error) { error_ = error; } |
475 | 467 |
476 void set_detailed_error(const char* error) { detailed_error_ = error; } | 468 void set_detailed_error(const char* error) { detailed_error_ = error; } |
477 | 469 |
478 std::string detailed_error_; | 470 std::string detailed_error_; |
479 QuicFramerVisitorInterface* visitor_; | 471 QuicFramerVisitorInterface* visitor_; |
480 QuicErrorCode error_; | 472 QuicErrorCode error_; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 QuicTime::Delta last_timestamp_; | 512 QuicTime::Delta last_timestamp_; |
521 // The diversification nonce from the last received packet. | 513 // The diversification nonce from the last received packet. |
522 DiversificationNonce last_nonce_; | 514 DiversificationNonce last_nonce_; |
523 | 515 |
524 DISALLOW_COPY_AND_ASSIGN(QuicFramer); | 516 DISALLOW_COPY_AND_ASSIGN(QuicFramer); |
525 }; | 517 }; |
526 | 518 |
527 } // namespace net | 519 } // namespace net |
528 | 520 |
529 #endif // NET_QUIC_CORE_QUIC_FRAMER_H_ | 521 #endif // NET_QUIC_CORE_QUIC_FRAMER_H_ |
OLD | NEW |