| 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 // interesting points. Implementations must not mutate the state of | 45 // interesting points. Implementations must not mutate the state of |
| 46 // the packet manager or connection as a result of these callbacks. | 46 // the packet manager or connection as a result of these callbacks. |
| 47 class NET_EXPORT_PRIVATE DebugDelegate { | 47 class NET_EXPORT_PRIVATE DebugDelegate { |
| 48 public: | 48 public: |
| 49 virtual ~DebugDelegate() {} | 49 virtual ~DebugDelegate() {} |
| 50 | 50 |
| 51 // Called when a spurious retransmission is detected. | 51 // Called when a spurious retransmission is detected. |
| 52 virtual void OnSpuriousPacketRetransmition( | 52 virtual void OnSpuriousPacketRetransmition( |
| 53 TransmissionType transmission_type, | 53 TransmissionType transmission_type, |
| 54 QuicByteCount byte_size) {} | 54 QuicByteCount byte_size) {} |
| 55 |
| 56 virtual void OnSentPacket( |
| 57 QuicPacketSequenceNumber sequence_number, |
| 58 QuicTime sent_time, |
| 59 QuicByteCount bytes) {} |
| 60 |
| 61 virtual void OnRetransmittedPacket( |
| 62 QuicPacketSequenceNumber old_sequence_number, |
| 63 QuicPacketSequenceNumber new_sequence_number, |
| 64 TransmissionType transmission_type, |
| 65 QuicTime time) {} |
| 66 |
| 67 virtual void OnIncomingAck( |
| 68 const ReceivedPacketInfo& received_info, |
| 69 QuicTime ack_receive_time, |
| 70 QuicPacketSequenceNumber largest_observed, |
| 71 bool largest_observed_acked, |
| 72 QuicPacketSequenceNumber least_unacked_sent_packet) {} |
| 55 }; | 73 }; |
| 56 | 74 |
| 57 // Struct to store the pending retransmission information. | 75 // Struct to store the pending retransmission information. |
| 58 struct PendingRetransmission { | 76 struct PendingRetransmission { |
| 59 PendingRetransmission(QuicPacketSequenceNumber sequence_number, | 77 PendingRetransmission(QuicPacketSequenceNumber sequence_number, |
| 60 TransmissionType transmission_type, | 78 TransmissionType transmission_type, |
| 61 const RetransmittableFrames& retransmittable_frames, | 79 const RetransmittableFrames& retransmittable_frames, |
| 62 QuicSequenceNumberLength sequence_number_length) | 80 QuicSequenceNumberLength sequence_number_length) |
| 63 : sequence_number(sequence_number), | 81 : sequence_number(sequence_number), |
| 64 transmission_type(transmission_type), | 82 transmission_type(transmission_type), |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 QuicBandwidth BandwidthEstimate() const; | 184 QuicBandwidth BandwidthEstimate() const; |
| 167 | 185 |
| 168 // Returns true if the current bandwidth estimate is reliable. | 186 // Returns true if the current bandwidth estimate is reliable. |
| 169 bool HasReliableBandwidthEstimate() const; | 187 bool HasReliableBandwidthEstimate() const; |
| 170 | 188 |
| 171 // Returns the size of the current congestion window in bytes. Note, this is | 189 // Returns the size of the current congestion window in bytes. Note, this is |
| 172 // not the *available* window. Some send algorithms may not use a congestion | 190 // not the *available* window. Some send algorithms may not use a congestion |
| 173 // window and will return 0. | 191 // window and will return 0. |
| 174 QuicByteCount GetCongestionWindow() const; | 192 QuicByteCount GetCongestionWindow() const; |
| 175 | 193 |
| 194 // Returns the size of the slow start congestion window in bytes, |
| 195 // aka ssthresh. Some send algorithms do not define a slow start |
| 196 // threshold and will return 0. |
| 197 QuicByteCount GetSlowStartThreshold() const; |
| 198 |
| 176 // Enables pacing if it has not already been enabled, and if | 199 // Enables pacing if it has not already been enabled, and if |
| 177 // FLAGS_enable_quic_pacing is set. | 200 // FLAGS_enable_quic_pacing is set. |
| 178 void MaybeEnablePacing(); | 201 void MaybeEnablePacing(); |
| 179 | 202 |
| 180 bool using_pacing() const { return using_pacing_; } | 203 bool using_pacing() const { return using_pacing_; } |
| 181 | 204 |
| 182 void set_debug_delegate(DebugDelegate* debug_delegate) { | 205 void set_debug_delegate(DebugDelegate* debug_delegate) { |
| 183 debug_delegate_ = debug_delegate; | 206 debug_delegate_ = debug_delegate; |
| 184 } | 207 } |
| 185 | 208 |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 // Sets of packets acked and lost as a result of the last congestion event. | 342 // Sets of packets acked and lost as a result of the last congestion event. |
| 320 SendAlgorithmInterface::CongestionMap packets_acked_; | 343 SendAlgorithmInterface::CongestionMap packets_acked_; |
| 321 SendAlgorithmInterface::CongestionMap packets_lost_; | 344 SendAlgorithmInterface::CongestionMap packets_lost_; |
| 322 | 345 |
| 323 DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManager); | 346 DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManager); |
| 324 }; | 347 }; |
| 325 | 348 |
| 326 } // namespace net | 349 } // namespace net |
| 327 | 350 |
| 328 #endif // NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ | 351 #endif // NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ |
| OLD | NEW |