| Index: net/quic/quic_protocol.cc
|
| diff --git a/net/quic/quic_protocol.cc b/net/quic/quic_protocol.cc
|
| index 404c72b6bd936c7fe1759c9db266bb3620502c46..a7b5ba6ac7bc125881ac7c975b85ff7683762287 100644
|
| --- a/net/quic/quic_protocol.cc
|
| +++ b/net/quic/quic_protocol.cc
|
| @@ -210,15 +210,7 @@ ostream& operator<<(ostream& os, const QuicPacketHeader& header) {
|
| bool IsAwaitingPacket(const QuicAckFrame& ack_frame,
|
| QuicPacketNumber packet_number) {
|
| return packet_number > ack_frame.largest_observed ||
|
| - ContainsKey(ack_frame.missing_packets, packet_number);
|
| -}
|
| -
|
| -void InsertMissingPacketsBetween(QuicAckFrame* ack_frame,
|
| - QuicPacketNumber lower,
|
| - QuicPacketNumber higher) {
|
| - for (QuicPacketNumber i = lower; i < higher; ++i) {
|
| - ack_frame->missing_packets.insert(i);
|
| - }
|
| + ack_frame.missing_packets.Contains(packet_number);
|
| }
|
|
|
| QuicStopWaitingFrame::QuicStopWaitingFrame()
|
| @@ -322,17 +314,86 @@ ostream& operator<<(ostream& os, const QuicStopWaitingFrame& sent_info) {
|
| return os;
|
| }
|
|
|
| +PacketNumberQueue::PacketNumberQueue() {}
|
| +
|
| +PacketNumberQueue::~PacketNumberQueue() {}
|
| +
|
| +void PacketNumberQueue::Add(QuicPacketNumber packet_number) {
|
| + packet_numbers_.insert(packet_number);
|
| +}
|
| +
|
| +void PacketNumberQueue::Add(QuicPacketNumber lower, QuicPacketNumber higher) {
|
| + for (QuicPacketNumber packet_number = lower; packet_number < higher;
|
| + ++packet_number) {
|
| + Add(packet_number);
|
| + }
|
| +}
|
| +
|
| +void PacketNumberQueue::Remove(QuicPacketNumber packet_number) {
|
| + packet_numbers_.erase(packet_number);
|
| +}
|
| +
|
| +bool PacketNumberQueue::RemoveUpTo(QuicPacketNumber higher) {
|
| + size_t orig_size = packet_numbers_.size();
|
| + packet_numbers_.erase(packet_numbers_.begin(),
|
| + packet_numbers_.lower_bound(higher));
|
| + return orig_size != packet_numbers_.size();
|
| +}
|
| +
|
| +bool PacketNumberQueue::Contains(QuicPacketNumber packet_number) const {
|
| + return ContainsKey(packet_numbers_, packet_number);
|
| +}
|
| +
|
| +bool PacketNumberQueue::Empty() const {
|
| + return packet_numbers_.empty();
|
| +}
|
| +
|
| +QuicPacketNumber PacketNumberQueue::Min() const {
|
| + DCHECK(!Empty());
|
| + return *packet_numbers_.begin();
|
| +}
|
| +
|
| +QuicPacketNumber PacketNumberQueue::Max() const {
|
| + DCHECK(!Empty());
|
| + return *packet_numbers_.rbegin();
|
| +}
|
| +
|
| +size_t PacketNumberQueue::NumPackets() const {
|
| + return packet_numbers_.size();
|
| +}
|
| +
|
| +PacketNumberQueue::const_iterator PacketNumberQueue::begin() const {
|
| + return packet_numbers_.cbegin();
|
| +}
|
| +
|
| +PacketNumberQueue::const_iterator PacketNumberQueue::end() const {
|
| + return packet_numbers_.cend();
|
| +}
|
| +
|
| +PacketNumberQueue::const_iterator PacketNumberQueue::lower_bound(
|
| + QuicPacketNumber packet_number) const {
|
| + return packet_numbers_.lower_bound(packet_number);
|
| +}
|
| +
|
| +PacketNumberQueue::const_iterator PacketNumberQueue::upper_bound(
|
| + QuicPacketNumber packet_number) const {
|
| + return packet_numbers_.upper_bound(packet_number);
|
| +}
|
| +
|
| +ostream& operator<<(ostream& os, const PacketNumberQueue& q) {
|
| + for (QuicPacketNumber packet_number : q.packet_numbers_) {
|
| + os << packet_number << " ";
|
| + }
|
| + return os;
|
| +}
|
| +
|
| ostream& operator<<(ostream& os, const QuicAckFrame& ack_frame) {
|
| os << "entropy_hash: " << static_cast<int>(ack_frame.entropy_hash)
|
| << " largest_observed: " << ack_frame.largest_observed
|
| << " delta_time_largest_observed: "
|
| << ack_frame.delta_time_largest_observed.ToMicroseconds()
|
| - << " missing_packets: [ ";
|
| - for (PacketNumberSet::const_iterator it = ack_frame.missing_packets.begin();
|
| - it != ack_frame.missing_packets.end(); ++it) {
|
| - os << *it << " ";
|
| - }
|
| - os << " ] is_truncated: " << ack_frame.is_truncated;
|
| + << " missing_packets: [ " << ack_frame.missing_packets
|
| + << " ] is_truncated: " << ack_frame.is_truncated;
|
| os << " revived_packets: [ ";
|
| for (PacketNumberSet::const_iterator it = ack_frame.revived_packets.begin();
|
| it != ack_frame.revived_packets.end(); ++it) {
|
|
|