OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_SENT_PACKET_MANAGER_H_ | 5 #ifndef NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ |
6 #define NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ | 6 #define NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <list> | 9 #include <list> |
10 #include <map> | 10 #include <map> |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 bool using_pacing() const { return using_pacing_; } | 219 bool using_pacing() const { return using_pacing_; } |
220 | 220 |
221 void set_debug_delegate(DebugDelegate* debug_delegate) { | 221 void set_debug_delegate(DebugDelegate* debug_delegate) { |
222 debug_delegate_ = debug_delegate; | 222 debug_delegate_ = debug_delegate; |
223 } | 223 } |
224 | 224 |
225 QuicPacketSequenceNumber largest_observed() const { | 225 QuicPacketSequenceNumber largest_observed() const { |
226 return largest_observed_; | 226 return largest_observed_; |
227 } | 227 } |
228 | 228 |
| 229 QuicPacketSequenceNumber least_packet_awaited_by_peer() { |
| 230 return least_packet_awaited_by_peer_; |
| 231 } |
| 232 |
229 void set_network_change_visitor(NetworkChangeVisitor* visitor) { | 233 void set_network_change_visitor(NetworkChangeVisitor* visitor) { |
230 DCHECK(!network_change_visitor_); | 234 DCHECK(!network_change_visitor_); |
231 DCHECK(visitor); | 235 DCHECK(visitor); |
232 network_change_visitor_ = visitor; | 236 network_change_visitor_ = visitor; |
233 } | 237 } |
234 | 238 |
235 size_t consecutive_rto_count() const { | 239 size_t consecutive_rto_count() const { |
236 return consecutive_rto_count_; | 240 return consecutive_rto_count_; |
237 } | 241 } |
238 | 242 |
(...skipping 15 matching lines...) Expand all Loading... |
254 // Retransmission of handshake packets prior to handshake completion. | 258 // Retransmission of handshake packets prior to handshake completion. |
255 HANDSHAKE_MODE, | 259 HANDSHAKE_MODE, |
256 // Re-invoke the loss detection when a packet is not acked before the | 260 // Re-invoke the loss detection when a packet is not acked before the |
257 // loss detection algorithm expects. | 261 // loss detection algorithm expects. |
258 LOSS_MODE, | 262 LOSS_MODE, |
259 }; | 263 }; |
260 | 264 |
261 typedef linked_hash_map<QuicPacketSequenceNumber, | 265 typedef linked_hash_map<QuicPacketSequenceNumber, |
262 TransmissionType> PendingRetransmissionMap; | 266 TransmissionType> PendingRetransmissionMap; |
263 | 267 |
| 268 // Updates the least_packet_awaited_by_peer. |
| 269 void UpdatePacketInformationReceivedByPeer(const QuicAckFrame& ack_frame); |
| 270 |
264 // Process the incoming ack looking for newly ack'd data packets. | 271 // Process the incoming ack looking for newly ack'd data packets. |
265 void HandleAckForSentPackets(const QuicAckFrame& ack_frame); | 272 void HandleAckForSentPackets(const QuicAckFrame& ack_frame); |
266 | 273 |
267 // Returns the current retransmission mode. | 274 // Returns the current retransmission mode. |
268 RetransmissionTimeoutMode GetRetransmissionMode() const; | 275 RetransmissionTimeoutMode GetRetransmissionMode() const; |
269 | 276 |
270 // Retransmits all crypto stream packets. | 277 // Retransmits all crypto stream packets. |
271 void RetransmitCryptoPackets(); | 278 void RetransmitCryptoPackets(); |
272 | 279 |
273 // Retransmits all the packets and abandons by invoking a full RTO. | 280 // Retransmits all the packets and abandons by invoking a full RTO. |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 DebugDelegate* debug_delegate_; | 355 DebugDelegate* debug_delegate_; |
349 NetworkChangeVisitor* network_change_visitor_; | 356 NetworkChangeVisitor* network_change_visitor_; |
350 RttStats rtt_stats_; | 357 RttStats rtt_stats_; |
351 scoped_ptr<SendAlgorithmInterface> send_algorithm_; | 358 scoped_ptr<SendAlgorithmInterface> send_algorithm_; |
352 scoped_ptr<LossDetectionInterface> loss_algorithm_; | 359 scoped_ptr<LossDetectionInterface> loss_algorithm_; |
353 | 360 |
354 // The largest sequence number which we have sent and received an ACK for | 361 // The largest sequence number which we have sent and received an ACK for |
355 // from the peer. | 362 // from the peer. |
356 QuicPacketSequenceNumber largest_observed_; | 363 QuicPacketSequenceNumber largest_observed_; |
357 | 364 |
| 365 // Least sequence number which the peer is still waiting for. |
| 366 QuicPacketSequenceNumber least_packet_awaited_by_peer_; |
| 367 |
358 // Tracks the first RTO packet. If any packet before that packet gets acked, | 368 // Tracks the first RTO packet. If any packet before that packet gets acked, |
359 // it indicates the RTO was spurious and should be reversed(F-RTO). | 369 // it indicates the RTO was spurious and should be reversed(F-RTO). |
360 QuicPacketSequenceNumber first_rto_transmission_; | 370 QuicPacketSequenceNumber first_rto_transmission_; |
361 // Number of times the RTO timer has fired in a row without receiving an ack. | 371 // Number of times the RTO timer has fired in a row without receiving an ack. |
362 size_t consecutive_rto_count_; | 372 size_t consecutive_rto_count_; |
363 // Number of times the tail loss probe has been sent. | 373 // Number of times the tail loss probe has been sent. |
364 size_t consecutive_tlp_count_; | 374 size_t consecutive_tlp_count_; |
365 // Number of times the crypto handshake has been retransmitted. | 375 // Number of times the crypto handshake has been retransmitted. |
366 size_t consecutive_crypto_retransmission_count_; | 376 size_t consecutive_crypto_retransmission_count_; |
367 // Number of pending transmissions of TLP or crypto packets. | 377 // Number of pending transmissions of TLP or crypto packets. |
(...skipping 15 matching lines...) Expand all Loading... |
383 // Records bandwidth from server to client in normal operation, over periods | 393 // Records bandwidth from server to client in normal operation, over periods |
384 // of time with no loss events. | 394 // of time with no loss events. |
385 QuicSustainedBandwidthRecorder sustained_bandwidth_recorder_; | 395 QuicSustainedBandwidthRecorder sustained_bandwidth_recorder_; |
386 | 396 |
387 DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManager); | 397 DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManager); |
388 }; | 398 }; |
389 | 399 |
390 } // namespace net | 400 } // namespace net |
391 | 401 |
392 #endif // NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ | 402 #endif // NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ |
OLD | NEW |