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_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 26 matching lines...) Expand all Loading... |
37 const size_t kQuicStreamIdSize = 4; | 37 const size_t kQuicStreamIdSize = 4; |
38 // Number of bytes reserved for fin flag in stream frame. | 38 // Number of bytes reserved for fin flag in stream frame. |
39 const size_t kQuicStreamFinSize = 1; | 39 const size_t kQuicStreamFinSize = 1; |
40 // Number of bytes reserved for byte offset in stream frame. | 40 // Number of bytes reserved for byte offset in stream frame. |
41 const size_t kQuicStreamOffsetSize = 8; | 41 const size_t kQuicStreamOffsetSize = 8; |
42 // Number of bytes reserved to store payload length in stream frame. | 42 // Number of bytes reserved to store payload length in stream frame. |
43 const size_t kQuicStreamPayloadLengthSize = 2; | 43 const size_t kQuicStreamPayloadLengthSize = 2; |
44 | 44 |
45 // Size in bytes of the entropy hash sent in ack frames. | 45 // Size in bytes of the entropy hash sent in ack frames. |
46 const size_t kQuicEntropyHashSize = 1; | 46 const size_t kQuicEntropyHashSize = 1; |
| 47 // Size in bytes reserved for the delta time of the largest observed |
| 48 // sequence number in ack frames. |
| 49 const size_t kQuicDeltaTimeLargestObservedSize = 4; |
47 // Size in bytes reserved for the number of missing packets in ack frames. | 50 // Size in bytes reserved for the number of missing packets in ack frames. |
48 const size_t kNumberOfMissingPacketsSize = 1; | 51 const size_t kNumberOfMissingPacketsSize = 1; |
49 | 52 |
50 // This class receives callbacks from the framer when packets | 53 // This class receives callbacks from the framer when packets |
51 // are processed. | 54 // are processed. |
52 class NET_EXPORT_PRIVATE QuicFramerVisitorInterface { | 55 class NET_EXPORT_PRIVATE QuicFramerVisitorInterface { |
53 public: | 56 public: |
54 virtual ~QuicFramerVisitorInterface() {} | 57 virtual ~QuicFramerVisitorInterface() {} |
55 | 58 |
56 // Called if an error is detected in the QUIC protocol. | 59 // Called if an error is detected in the QUIC protocol. |
(...skipping 26 matching lines...) Expand all Loading... |
83 | 86 |
84 // Called when the complete header of a packet had been parsed. | 87 // Called when the complete header of a packet had been parsed. |
85 // If OnPacketHeader returns false, framing for this packet will cease. | 88 // If OnPacketHeader returns false, framing for this packet will cease. |
86 virtual bool OnPacketHeader(const QuicPacketHeader& header) = 0; | 89 virtual bool OnPacketHeader(const QuicPacketHeader& header) = 0; |
87 | 90 |
88 // Called when a data packet is parsed that is part of an FEC group. | 91 // Called when a data packet is parsed that is part of an FEC group. |
89 // |payload| is the non-encrypted FEC protected payload of the packet. | 92 // |payload| is the non-encrypted FEC protected payload of the packet. |
90 virtual void OnFecProtectedPayload(base::StringPiece payload) = 0; | 93 virtual void OnFecProtectedPayload(base::StringPiece payload) = 0; |
91 | 94 |
92 // Called when a StreamFrame has been parsed. | 95 // Called when a StreamFrame has been parsed. |
93 virtual void OnStreamFrame(const QuicStreamFrame& frame) = 0; | 96 virtual bool OnStreamFrame(const QuicStreamFrame& frame) = 0; |
94 | 97 |
95 // Called when a AckFrame has been parsed. | 98 // Called when a AckFrame has been parsed. If OnAckFrame returns false, |
96 virtual void OnAckFrame(const QuicAckFrame& frame) = 0; | 99 // the framer will stop parsing the current packet. |
| 100 virtual bool OnAckFrame(const QuicAckFrame& frame) = 0; |
97 | 101 |
98 // Called when a CongestionFeedbackFrame has been parsed. | 102 // Called when a CongestionFeedbackFrame has been parsed. |
99 virtual void OnCongestionFeedbackFrame( | 103 virtual bool OnCongestionFeedbackFrame( |
100 const QuicCongestionFeedbackFrame& frame) = 0; | 104 const QuicCongestionFeedbackFrame& frame) = 0; |
101 | 105 |
102 // Called when a RstStreamFrame has been parsed. | 106 // Called when a RstStreamFrame has been parsed. |
103 virtual void OnRstStreamFrame(const QuicRstStreamFrame& frame) = 0; | 107 virtual bool OnRstStreamFrame(const QuicRstStreamFrame& frame) = 0; |
104 | 108 |
105 // Called when a ConnectionCloseFrame has been parsed. | 109 // Called when a ConnectionCloseFrame has been parsed. |
106 virtual void OnConnectionCloseFrame( | 110 virtual bool OnConnectionCloseFrame( |
107 const QuicConnectionCloseFrame& frame) = 0; | 111 const QuicConnectionCloseFrame& frame) = 0; |
108 | 112 |
109 // Called when a GoAwayFrame has been parsed. | 113 // Called when a GoAwayFrame has been parsed. |
110 virtual void OnGoAwayFrame(const QuicGoAwayFrame& frame) = 0; | 114 virtual bool OnGoAwayFrame(const QuicGoAwayFrame& frame) = 0; |
111 | 115 |
112 // Called when FEC data has been parsed. | 116 // Called when FEC data has been parsed. |
113 virtual void OnFecData(const QuicFecData& fec) = 0; | 117 virtual void OnFecData(const QuicFecData& fec) = 0; |
114 | 118 |
115 // Called when a packet has been completely processed. | 119 // Called when a packet has been completely processed. |
116 virtual void OnPacketComplete() = 0; | 120 virtual void OnPacketComplete() = 0; |
117 }; | 121 }; |
118 | 122 |
119 class NET_EXPORT_PRIVATE QuicFecBuilderInterface { | 123 class NET_EXPORT_PRIVATE QuicFecBuilderInterface { |
120 public: | 124 public: |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 bool WritePacketHeader(const QuicPacketHeader& header, | 312 bool WritePacketHeader(const QuicPacketHeader& header, |
309 QuicDataWriter* writer); | 313 QuicDataWriter* writer); |
310 | 314 |
311 bool ProcessPublicHeader(QuicPacketPublicHeader* header); | 315 bool ProcessPublicHeader(QuicPacketPublicHeader* header); |
312 | 316 |
313 bool ProcessPacketHeader(QuicPacketHeader* header, | 317 bool ProcessPacketHeader(QuicPacketHeader* header, |
314 const QuicEncryptedPacket& packet); | 318 const QuicEncryptedPacket& packet); |
315 | 319 |
316 bool ProcessPacketSequenceNumber(QuicPacketSequenceNumber* sequence_number); | 320 bool ProcessPacketSequenceNumber(QuicPacketSequenceNumber* sequence_number); |
317 bool ProcessFrameData(); | 321 bool ProcessFrameData(); |
318 bool ProcessStreamFrame(); | 322 bool ProcessStreamFrame(QuicStreamFrame* frame); |
319 bool ProcessAckFrame(QuicAckFrame* frame); | 323 bool ProcessAckFrame(QuicAckFrame* frame); |
320 bool ProcessReceivedInfo(ReceivedPacketInfo* received_info); | 324 bool ProcessReceivedInfo(ReceivedPacketInfo* received_info); |
321 bool ProcessSentInfo(SentPacketInfo* sent_info); | 325 bool ProcessSentInfo(SentPacketInfo* sent_info); |
322 bool ProcessQuicCongestionFeedbackFrame( | 326 bool ProcessQuicCongestionFeedbackFrame( |
323 QuicCongestionFeedbackFrame* congestion_feedback); | 327 QuicCongestionFeedbackFrame* congestion_feedback); |
324 bool ProcessRstStreamFrame(); | 328 bool ProcessRstStreamFrame(QuicRstStreamFrame* frame); |
325 bool ProcessConnectionCloseFrame(); | 329 bool ProcessConnectionCloseFrame(QuicConnectionCloseFrame* frame); |
326 bool ProcessGoAwayFrame(); | 330 bool ProcessGoAwayFrame(QuicGoAwayFrame* frame); |
327 | 331 |
328 bool DecryptPayload(QuicPacketSequenceNumber packet_sequence_number, | 332 bool DecryptPayload(QuicPacketSequenceNumber packet_sequence_number, |
329 bool version_flag, | 333 bool version_flag, |
330 const QuicEncryptedPacket& packet); | 334 const QuicEncryptedPacket& packet); |
331 | 335 |
332 // Returns the full packet sequence number from the truncated | 336 // Returns the full packet sequence number from the truncated |
333 // wire format version and the last seen packet sequence number. | 337 // wire format version and the last seen packet sequence number. |
334 QuicPacketSequenceNumber CalculatePacketSequenceNumberFromWire( | 338 QuicPacketSequenceNumber CalculatePacketSequenceNumberFromWire( |
335 QuicPacketSequenceNumber packet_sequence_number) const; | 339 QuicPacketSequenceNumber packet_sequence_number) const; |
336 | 340 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 // The time this frames was created. Time written to the wire will be | 393 // The time this frames was created. Time written to the wire will be |
390 // written as a delta from this value. | 394 // written as a delta from this value. |
391 QuicTime creation_time_; | 395 QuicTime creation_time_; |
392 | 396 |
393 DISALLOW_COPY_AND_ASSIGN(QuicFramer); | 397 DISALLOW_COPY_AND_ASSIGN(QuicFramer); |
394 }; | 398 }; |
395 | 399 |
396 } // namespace net | 400 } // namespace net |
397 | 401 |
398 #endif // NET_QUIC_QUIC_FRAMER_H_ | 402 #endif // NET_QUIC_QUIC_FRAMER_H_ |
OLD | NEW |