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

Unified Diff: net/quic/congestion_control/send_algorithm_simulator.cc

Issue 450043002: A fix to QUIC's test only SendAlgorithmSimulator to ensure it treats (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Check_return_value_72727018
Patch Set: Created 6 years, 4 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/congestion_control/send_algorithm_simulator.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/congestion_control/send_algorithm_simulator.cc
diff --git a/net/quic/congestion_control/send_algorithm_simulator.cc b/net/quic/congestion_control/send_algorithm_simulator.cc
index 7af949ad2eb3040a7d22d6126ae56b2d8bceb19f..33f6ba009f489f5eaa3f380d6466f55a9ea27476 100644
--- a/net/quic/congestion_control/send_algorithm_simulator.cc
+++ b/net/quic/congestion_control/send_algorithm_simulator.cc
@@ -195,7 +195,7 @@ QuicTime::Delta SendAlgorithmSimulator::FindNextAck(
continue;
}
// Lost packets don't trigger an ack.
- if (it->ack_time == QuicTime::Zero()) {
+ if (it->lost) {
continue;
}
DCHECK_LT(*next_acked, it->sequence_number);
@@ -228,7 +228,7 @@ bool SendAlgorithmSimulator::HasRecentLostPackets(
continue;
}
// Lost packets don't trigger an ack.
- if (it->ack_time == QuicTime::Zero()) {
+ if (it->lost) {
return true;
}
// Buffer dropped packets are skipped automatically, but still end up
@@ -252,7 +252,7 @@ void SendAlgorithmSimulator::HandlePendingAck(Transfer* transfer) {
<< " Now():" << (clock_->Now().ToDebuggingValue() / 1000) << "ms";
// Some entries may be missing from the sent_packets_ array, if they were
// dropped due to buffer overruns.
- SentPacket largest_observed(0, QuicTime::Zero(), QuicTime::Zero(), NULL);
+ SentPacket largest_observed;
list<SentPacket>::iterator it = sent_packets_.begin();
while (sender->last_acked < sender->next_acked) {
++sender->last_acked;
@@ -271,10 +271,10 @@ void SendAlgorithmSimulator::HandlePendingAck(Transfer* transfer) {
lost_packets[sender->last_acked] = info;
continue;
}
- if (it->ack_time.IsInitialized()) {
- acked_packets[sender->last_acked] = info;
- } else {
+ if (it->lost) {
lost_packets[sender->last_acked] = info;
+ } else {
+ acked_packets[sender->last_acked] = info;
}
// This packet has been acked or lost, remove it from sent_packets_.
largest_observed = *it;
@@ -310,6 +310,8 @@ void SendAlgorithmSimulator::HandlePendingAck(Transfer* transfer) {
sender->last_transfer_bandwidth =
QuicBandwidth::FromBytesAndTimeDelta(transfer->num_bytes,
transfer_time);
+ DCHECK_GE(bandwidth_.ToBitsPerSecond(),
+ sender->last_transfer_bandwidth.ToBitsPerSecond());
for (vector<Transfer>::iterator it = pending_transfers_.begin();
it != pending_transfers_.end(); ++it) {
if (transfer == &(*it)) {
@@ -336,8 +338,7 @@ void SendAlgorithmSimulator::SendDataNow(Transfer* transfer) {
bool packet_lost =
forward_loss_rate_ * kuint64max > simple_random_.RandUint64();
// Handle correlated loss.
- if (!sent_packets_.empty() &&
- !sent_packets_.back().ack_time.IsInitialized() &&
+ if (!sent_packets_.empty() && sent_packets_.back().lost &&
loss_correlation_ * kuint64max > simple_random_.RandUint64()) {
packet_lost = true;
}
@@ -354,10 +355,8 @@ void SendAlgorithmSimulator::SendDataNow(Transfer* transfer) {
QuicTime queue_ack_time = sent_packets_.empty() ? QuicTime::Zero() :
sent_packets_.back().ack_time.Add(bandwidth_.TransferTime(kPacketSize));
ack_time = QuicTime::Max(ack_time, queue_ack_time);
- // If the packet is lost, give it an ack time of Zero.
sent_packets_.push_back(SentPacket(
- sender->last_sent, clock_->Now(),
- packet_lost ? QuicTime::Zero() : ack_time, transfer));
+ sender->last_sent, clock_->Now(), ack_time, packet_lost, transfer));
} else {
DVLOG(1) << "losing packet:" << sender->last_sent
<< " because the buffer was full.";
« no previous file with comments | « net/quic/congestion_control/send_algorithm_simulator.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698