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

Side by Side Diff: net/quic/core/congestion_control/bandwidth_sampler.h

Issue 2561893002: Add QUIC_EXPORT macros (Closed)
Patch Set: no chromium Created 4 years 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 | « no previous file | net/quic/core/congestion_control/bbr_sender.h » ('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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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_CONGESTION_CONTROL_BANDWIDTH_SAMPLER_H_ 5 #ifndef NET_QUIC_CORE_CONGESTION_CONTROL_BANDWIDTH_SAMPLER_H_
6 #define NET_QUIC_CORE_CONGESTION_CONTROL_BANDWIDTH_SAMPLER_H_ 6 #define NET_QUIC_CORE_CONGESTION_CONTROL_BANDWIDTH_SAMPLER_H_
7 7
8 #include "net/base/linked_hash_map.h" 8 #include "net/base/linked_hash_map.h"
9 #include "net/quic/core/quic_bandwidth.h" 9 #include "net/quic/core/quic_bandwidth.h"
10 #include "net/quic/core/quic_packets.h" 10 #include "net/quic/core/quic_packets.h"
11 #include "net/quic/core/quic_time.h" 11 #include "net/quic/core/quic_time.h"
12 #include "net/quic/platform/api/quic_export.h"
Zhongyi Shi 2016/12/08 23:19:31 I actually didn't see this file present in this CL
Ryan Hamilton 2016/12/09 00:40:41 *scratch head* I don't understand how that happene
12 13
13 namespace net { 14 namespace net {
14 15
15 namespace test { 16 namespace test {
16 class BandwidthSamplerPeer; 17 class BandwidthSamplerPeer;
17 } // namespace test 18 } // namespace test
18 19
19 struct NET_EXPORT_PRIVATE BandwidthSample { 20 struct QUIC_EXPORT_PRIVATE BandwidthSample {
20 // The bandwidth at that particular sample. Zero if no valid bandwidth sample 21 // The bandwidth at that particular sample. Zero if no valid bandwidth sample
21 // is available. 22 // is available.
22 QuicBandwidth bandwidth; 23 QuicBandwidth bandwidth;
23 24
24 // The RTT measurement at this particular sample. Zero if no RTT sample is 25 // The RTT measurement at this particular sample. Zero if no RTT sample is
25 // available. Does not correct for delayed ack time. 26 // available. Does not correct for delayed ack time.
26 QuicTime::Delta rtt; 27 QuicTime::Delta rtt;
27 28
28 // Indicates whether the sample might be artificially low because the sender 29 // Indicates whether the sample might be artificially low because the sender
29 // did not have enough data to send in order to saturate the link. 30 // did not have enough data to send in order to saturate the link.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 // we use to compute the slope is going to be packet 20, a few seconds apart 109 // we use to compute the slope is going to be packet 20, a few seconds apart
109 // from the current packet, hence the resulting estimate would be extremely low 110 // from the current packet, hence the resulting estimate would be extremely low
110 // and not indicative of anything. Only at packet 41 the S_0/A_0 will become 21, 111 // and not indicative of anything. Only at packet 41 the S_0/A_0 will become 21,
111 // meaning that the bandwidth sample would exclude the quiescence. 112 // meaning that the bandwidth sample would exclude the quiescence.
112 // 113 //
113 // Based on the analysis of that scenario, we implement the following rule: once 114 // Based on the analysis of that scenario, we implement the following rule: once
114 // OnAppLimited() is called, all sent packets will produce app-limited samples 115 // OnAppLimited() is called, all sent packets will produce app-limited samples
115 // up until an ack for a packet that was sent after OnAppLimited() was called. 116 // up until an ack for a packet that was sent after OnAppLimited() was called.
116 // Note that while the scenario above is not the only scenario when the 117 // Note that while the scenario above is not the only scenario when the
117 // connection is app-limited, the approach works in other cases too. 118 // connection is app-limited, the approach works in other cases too.
118 class NET_EXPORT_PRIVATE BandwidthSampler { 119 class QUIC_EXPORT_PRIVATE BandwidthSampler {
119 public: 120 public:
120 BandwidthSampler(); 121 BandwidthSampler();
121 ~BandwidthSampler(); 122 ~BandwidthSampler();
122 123
123 // Inputs the sent packet information into the sampler. Assumes that all 124 // Inputs the sent packet information into the sampler. Assumes that all
124 // packets are sent in order. The information about the packet will not be 125 // packets are sent in order. The information about the packet will not be
125 // released from the sampler until it the packet is either acknowledged or 126 // released from the sampler until it the packet is either acknowledged or
126 // declared lost. 127 // declared lost.
127 void OnPacketSent(QuicTime sent_time, 128 void OnPacketSent(QuicTime sent_time,
128 QuicPacketNumber packet_number, 129 QuicPacketNumber packet_number,
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 QuicPacketNumber end_of_app_limited_phase_; 237 QuicPacketNumber end_of_app_limited_phase_;
237 238
238 // Record of the connection state at the point where each packet in flight was 239 // Record of the connection state at the point where each packet in flight was
239 // sent, indexed by the packet number. 240 // sent, indexed by the packet number.
240 ConnectionStateMap connection_state_map_; 241 ConnectionStateMap connection_state_map_;
241 }; 242 };
242 243
243 } // namespace net 244 } // namespace net
244 245
245 #endif // NET_QUIC_CORE_CONGESTION_CONTROL_BANDWIDTH_SAMPLER_H_ 246 #endif // NET_QUIC_CORE_CONGESTION_CONTROL_BANDWIDTH_SAMPLER_H_
OLDNEW
« no previous file with comments | « no previous file | net/quic/core/congestion_control/bbr_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698