Index: net/quic/quic_protocol.cc |
diff --git a/net/quic/quic_protocol.cc b/net/quic/quic_protocol.cc |
index 2661107d9ebfc7e8f1fbac7744b84621d25c62a8..ffa2e08a2e56e0cc216db24eae8267278cfcfd95 100644 |
--- a/net/quic/quic_protocol.cc |
+++ b/net/quic/quic_protocol.cc |
@@ -5,6 +5,8 @@ |
#include "net/quic/quic_protocol.h" |
using base::StringPiece; |
+using base::hash_set; |
+using std::ostream; |
namespace net { |
@@ -28,8 +30,43 @@ SentPacketInfo::SentPacketInfo() {} |
SentPacketInfo::~SentPacketInfo() {} |
+ostream& operator<<(ostream& os, const QuicAckFrame& s) { |
+ os << "largest_received: " << s.received_info.largest_received |
+ << " time: " << s.received_info.time_received |
+ << " missing: "; |
+ for (hash_set<QuicPacketSequenceNumber>::const_iterator it = |
+ s.received_info.missing_packets.begin(); |
+ it != s.received_info.missing_packets.end(); ++it) { |
+ os << *it << " "; |
+ } |
+ |
+ os << " least_waiting: " << s.sent_info.least_unacked |
+ << " no_retransmit: "; |
+ for (hash_set<QuicPacketSequenceNumber>::const_iterator it = |
+ s.sent_info.non_retransmiting.begin(); |
+ it != s.sent_info.non_retransmiting.end(); ++it) { |
+ os << *it << " "; |
+ } |
+ os << "\n"; |
+ return os; |
+} |
+ |
QuicFecData::QuicFecData() {} |
+bool QuicFecData::operator==(const QuicFecData& other) const { |
+ if (fec_group != other.fec_group) { |
+ return false; |
+ } |
+ if (first_protected_packet_sequence_number != |
+ other.first_protected_packet_sequence_number) { |
+ return false; |
+ } |
+ if (redundancy != other.redundancy) { |
+ return false; |
+ } |
+ return true; |
+} |
+ |
QuicData::~QuicData() { |
if (owns_buffer_) { |
delete [] const_cast<char*>(buffer_); |