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 #include "net/quic/quic_protocol.h" | 5 #include "net/quic/quic_protocol.h" |
6 | 6 |
7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
8 #include "net/quic/quic_utils.h" | 8 #include "net/quic/quic_utils.h" |
9 | 9 |
10 using base::StringPiece; | 10 using base::StringPiece; |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 << ", entropy hash: " << static_cast<int>(header.entropy_hash) | 203 << ", entropy hash: " << static_cast<int>(header.entropy_hash) |
204 << ", packet_number: " << header.packet_packet_number | 204 << ", packet_number: " << header.packet_packet_number |
205 << ", is_in_fec_group:" << header.is_in_fec_group | 205 << ", is_in_fec_group:" << header.is_in_fec_group |
206 << ", fec_group: " << header.fec_group << "}\n"; | 206 << ", fec_group: " << header.fec_group << "}\n"; |
207 return os; | 207 return os; |
208 } | 208 } |
209 | 209 |
210 bool IsAwaitingPacket(const QuicAckFrame& ack_frame, | 210 bool IsAwaitingPacket(const QuicAckFrame& ack_frame, |
211 QuicPacketNumber packet_number) { | 211 QuicPacketNumber packet_number) { |
212 return packet_number > ack_frame.largest_observed || | 212 return packet_number > ack_frame.largest_observed || |
213 ContainsKey(ack_frame.missing_packets, packet_number); | 213 ack_frame.missing_packets.Contains(packet_number); |
214 } | |
215 | |
216 void InsertMissingPacketsBetween(QuicAckFrame* ack_frame, | |
217 QuicPacketNumber lower, | |
218 QuicPacketNumber higher) { | |
219 for (QuicPacketNumber i = lower; i < higher; ++i) { | |
220 ack_frame->missing_packets.insert(i); | |
221 } | |
222 } | 214 } |
223 | 215 |
224 QuicStopWaitingFrame::QuicStopWaitingFrame() | 216 QuicStopWaitingFrame::QuicStopWaitingFrame() |
225 : entropy_hash(0), | 217 : entropy_hash(0), |
226 least_unacked(0) { | 218 least_unacked(0) { |
227 } | 219 } |
228 | 220 |
229 QuicStopWaitingFrame::~QuicStopWaitingFrame() {} | 221 QuicStopWaitingFrame::~QuicStopWaitingFrame() {} |
230 | 222 |
231 QuicAckFrame::QuicAckFrame() | 223 QuicAckFrame::QuicAckFrame() |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 } | 307 } |
316 | 308 |
317 QuicFecData::QuicFecData() : fec_group(0) {} | 309 QuicFecData::QuicFecData() : fec_group(0) {} |
318 | 310 |
319 ostream& operator<<(ostream& os, const QuicStopWaitingFrame& sent_info) { | 311 ostream& operator<<(ostream& os, const QuicStopWaitingFrame& sent_info) { |
320 os << "entropy_hash: " << static_cast<int>(sent_info.entropy_hash) | 312 os << "entropy_hash: " << static_cast<int>(sent_info.entropy_hash) |
321 << " least_unacked: " << sent_info.least_unacked; | 313 << " least_unacked: " << sent_info.least_unacked; |
322 return os; | 314 return os; |
323 } | 315 } |
324 | 316 |
| 317 PacketNumberQueue::PacketNumberQueue() {} |
| 318 |
| 319 PacketNumberQueue::~PacketNumberQueue() {} |
| 320 |
| 321 void PacketNumberQueue::Add(QuicPacketNumber packet_number) { |
| 322 packet_numbers_.insert(packet_number); |
| 323 } |
| 324 |
| 325 void PacketNumberQueue::Add(QuicPacketNumber lower, QuicPacketNumber higher) { |
| 326 for (QuicPacketNumber packet_number = lower; packet_number < higher; |
| 327 ++packet_number) { |
| 328 Add(packet_number); |
| 329 } |
| 330 } |
| 331 |
| 332 void PacketNumberQueue::Remove(QuicPacketNumber packet_number) { |
| 333 packet_numbers_.erase(packet_number); |
| 334 } |
| 335 |
| 336 bool PacketNumberQueue::RemoveUpTo(QuicPacketNumber higher) { |
| 337 size_t orig_size = packet_numbers_.size(); |
| 338 packet_numbers_.erase(packet_numbers_.begin(), |
| 339 packet_numbers_.lower_bound(higher)); |
| 340 return orig_size != packet_numbers_.size(); |
| 341 } |
| 342 |
| 343 bool PacketNumberQueue::Contains(QuicPacketNumber packet_number) const { |
| 344 return ContainsKey(packet_numbers_, packet_number); |
| 345 } |
| 346 |
| 347 bool PacketNumberQueue::Empty() const { |
| 348 return packet_numbers_.empty(); |
| 349 } |
| 350 |
| 351 QuicPacketNumber PacketNumberQueue::Min() const { |
| 352 DCHECK(!Empty()); |
| 353 return *packet_numbers_.begin(); |
| 354 } |
| 355 |
| 356 QuicPacketNumber PacketNumberQueue::Max() const { |
| 357 DCHECK(!Empty()); |
| 358 return *packet_numbers_.rbegin(); |
| 359 } |
| 360 |
| 361 size_t PacketNumberQueue::NumPackets() const { |
| 362 return packet_numbers_.size(); |
| 363 } |
| 364 |
| 365 PacketNumberQueue::const_iterator PacketNumberQueue::begin() const { |
| 366 return packet_numbers_.cbegin(); |
| 367 } |
| 368 |
| 369 PacketNumberQueue::const_iterator PacketNumberQueue::end() const { |
| 370 return packet_numbers_.cend(); |
| 371 } |
| 372 |
| 373 PacketNumberQueue::const_iterator PacketNumberQueue::lower_bound( |
| 374 QuicPacketNumber packet_number) const { |
| 375 return packet_numbers_.lower_bound(packet_number); |
| 376 } |
| 377 |
| 378 PacketNumberQueue::const_iterator PacketNumberQueue::upper_bound( |
| 379 QuicPacketNumber packet_number) const { |
| 380 return packet_numbers_.upper_bound(packet_number); |
| 381 } |
| 382 |
| 383 ostream& operator<<(ostream& os, const PacketNumberQueue& q) { |
| 384 for (QuicPacketNumber packet_number : q.packet_numbers_) { |
| 385 os << packet_number << " "; |
| 386 } |
| 387 return os; |
| 388 } |
| 389 |
325 ostream& operator<<(ostream& os, const QuicAckFrame& ack_frame) { | 390 ostream& operator<<(ostream& os, const QuicAckFrame& ack_frame) { |
326 os << "entropy_hash: " << static_cast<int>(ack_frame.entropy_hash) | 391 os << "entropy_hash: " << static_cast<int>(ack_frame.entropy_hash) |
327 << " largest_observed: " << ack_frame.largest_observed | 392 << " largest_observed: " << ack_frame.largest_observed |
328 << " delta_time_largest_observed: " | 393 << " delta_time_largest_observed: " |
329 << ack_frame.delta_time_largest_observed.ToMicroseconds() | 394 << ack_frame.delta_time_largest_observed.ToMicroseconds() |
330 << " missing_packets: [ "; | 395 << " missing_packets: [ " << ack_frame.missing_packets |
331 for (PacketNumberSet::const_iterator it = ack_frame.missing_packets.begin(); | 396 << " ] is_truncated: " << ack_frame.is_truncated; |
332 it != ack_frame.missing_packets.end(); ++it) { | |
333 os << *it << " "; | |
334 } | |
335 os << " ] is_truncated: " << ack_frame.is_truncated; | |
336 os << " revived_packets: [ "; | 397 os << " revived_packets: [ "; |
337 for (PacketNumberSet::const_iterator it = ack_frame.revived_packets.begin(); | 398 for (PacketNumberSet::const_iterator it = ack_frame.revived_packets.begin(); |
338 it != ack_frame.revived_packets.end(); ++it) { | 399 it != ack_frame.revived_packets.end(); ++it) { |
339 os << *it << " "; | 400 os << *it << " "; |
340 } | 401 } |
341 os << " ] received_packets: [ "; | 402 os << " ] received_packets: [ "; |
342 for (PacketTimeList::const_iterator it = | 403 for (PacketTimeList::const_iterator it = |
343 ack_frame.received_packet_times.begin(); | 404 ack_frame.received_packet_times.begin(); |
344 it != ack_frame.received_packet_times.end(); ++it) { | 405 it != ack_frame.received_packet_times.end(); ++it) { |
345 os << it->first << " at " << it->second.ToDebuggingValue() << " "; | 406 os << it->first << " at " << it->second.ToDebuggingValue() << " "; |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
672 sent_time(sent_time), | 733 sent_time(sent_time), |
673 bytes_sent(bytes_sent), | 734 bytes_sent(bytes_sent), |
674 nack_count(0), | 735 nack_count(0), |
675 transmission_type(transmission_type), | 736 transmission_type(transmission_type), |
676 all_transmissions(nullptr), | 737 all_transmissions(nullptr), |
677 in_flight(false), | 738 in_flight(false), |
678 is_unackable(false), | 739 is_unackable(false), |
679 is_fec_packet(is_fec_packet) {} | 740 is_fec_packet(is_fec_packet) {} |
680 | 741 |
681 } // namespace net | 742 } // namespace net |
OLD | NEW |