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

Side by Side Diff: net/quic/quic_protocol.cc

Issue 11439003: Revert 171096 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 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 | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_protocol.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "base/stl_util.h"
7 6
8 using base::StringPiece; 7 using base::StringPiece;
9 using std::map;
10 using std::ostream; 8 using std::ostream;
11 9
12 namespace net { 10 namespace net {
13 11
14 QuicStreamFrame::QuicStreamFrame() {} 12 QuicStreamFrame::QuicStreamFrame() {}
15 13
16 QuicStreamFrame::QuicStreamFrame(QuicStreamId stream_id, 14 QuicStreamFrame::QuicStreamFrame(QuicStreamId stream_id,
17 bool fin, 15 bool fin,
18 uint64 offset, 16 uint64 offset,
19 StringPiece data) 17 StringPiece data)
20 : stream_id(stream_id), 18 : stream_id(stream_id),
21 fin(fin), 19 fin(fin),
22 offset(offset), 20 offset(offset),
23 data(data) { 21 data(data) {
24 } 22 }
25 23
26 // TODO(ianswett): Initializing largest_received to 0 should not be necessary. 24 ReceivedPacketInfo::ReceivedPacketInfo() {}
27 ReceivedPacketInfo::ReceivedPacketInfo() : largest_received(0) {}
28 25
29 ReceivedPacketInfo::~ReceivedPacketInfo() {} 26 ReceivedPacketInfo::~ReceivedPacketInfo() {}
30 27
31 void ReceivedPacketInfo::RecordAck(QuicPacketSequenceNumber sequence_number,
32 QuicTime time) {
33 DCHECK(!ContainsAck(sequence_number));
34 received_packet_times[sequence_number] = time;
35 if (largest_received < sequence_number) {
36 largest_received = sequence_number;
37 }
38 }
39
40 bool ReceivedPacketInfo::ContainsAck(
41 QuicPacketSequenceNumber sequence_number) const {
42 return ContainsKey(received_packet_times, sequence_number);
43 }
44
45 void ReceivedPacketInfo::ClearAcksBefore(
46 QuicPacketSequenceNumber least_unacked) {
47 for (QuicPacketSequenceNumber i = received_packet_times.begin()->first;
48 i < least_unacked; ++i) {
49 received_packet_times.erase(i);
50 }
51 }
52
53 SentPacketInfo::SentPacketInfo() {} 28 SentPacketInfo::SentPacketInfo() {}
54 29
55 SentPacketInfo::~SentPacketInfo() {} 30 SentPacketInfo::~SentPacketInfo() {}
56 31
57 QuicAckFrame::QuicAckFrame(QuicPacketSequenceNumber largest_received,
58 QuicTime time_received,
59 QuicPacketSequenceNumber least_unacked) {
60 received_info.largest_received = largest_received;
61 for (QuicPacketSequenceNumber seq_num = 1;
62 seq_num <= largest_received; ++seq_num) {
63 received_info.RecordAck(seq_num, time_received);
64 }
65 sent_info.least_unacked = least_unacked;
66 congestion_info.type = kNone;
67 }
68
69 ostream& operator<<(ostream& os, const QuicAckFrame& s) { 32 ostream& operator<<(ostream& os, const QuicAckFrame& s) {
70 os << "sent info { least_waiting: " << s.sent_info.least_unacked << " } " 33 os << "largest_received: " << s.received_info.largest_received
71 << "received info { largest_received: " 34 << " time: " << s.received_info.time_received.ToMicroseconds()
72 << s.received_info.largest_received 35 << " missing: ";
73 << " received packets: [ "; 36 for (SequenceSet::const_iterator it = s.received_info.missing_packets.begin();
74 for (map<QuicPacketSequenceNumber, QuicTime>::const_iterator it = 37 it != s.received_info.missing_packets.end(); ++it) {
75 s.received_info.received_packet_times.begin(); 38 os << *it << " ";
76 it != s.received_info.received_packet_times.end(); ++it) {
77 os << it->first << "@" << it->second.ToMilliseconds() << " ";
78 } 39 }
79 40
80 os << "] } congestion info { type: " << s.congestion_info.type; 41 os << " least_waiting: " << s.sent_info.least_unacked
81 switch (s.congestion_info.type) { 42 << " no_retransmit: ";
82 case kNone: 43 for (SequenceSet::const_iterator it = s.sent_info.non_retransmiting.begin();
83 break; 44 it != s.sent_info.non_retransmiting.end(); ++it) {
84 case kInterArrival: { 45 os << *it << " ";
85 const CongestionFeedbackMessageInterArrival& inter_arrival =
86 s.congestion_info.inter_arrival;
87 os << " accumulated_number_of_lost_packets: "
88 << inter_arrival.accumulated_number_of_lost_packets;
89 os << " offset_time: " << inter_arrival.offset_time;
90 os << " delta_time: " << inter_arrival.delta_time;
91 break;
92 }
93 case kFixRate: {
94 os << " bitrate_in_bytes_per_second: "
95 << s.congestion_info.fix_rate.bitrate_in_bytes_per_second;
96 break;
97 }
98 case kTCP: {
99 const CongestionFeedbackMessageTCP& tcp = s.congestion_info.tcp;
100 os << " accumulated_number_of_lost_packets: "
101 << tcp.accumulated_number_of_lost_packets;
102 os << " receive_window: " << tcp.receive_window;
103 break;
104 }
105 } 46 }
106 os << " }\n"; 47 os << "\n";
107 return os; 48 return os;
108 } 49 }
109 50
110 QuicFecData::QuicFecData() {} 51 QuicFecData::QuicFecData() {}
111 52
112 bool QuicFecData::operator==(const QuicFecData& other) const { 53 bool QuicFecData::operator==(const QuicFecData& other) const {
113 if (fec_group != other.fec_group) { 54 if (fec_group != other.fec_group) {
114 return false; 55 return false;
115 } 56 }
116 if (min_protected_packet_sequence_number != 57 if (min_protected_packet_sequence_number !=
117 other.min_protected_packet_sequence_number) { 58 other.min_protected_packet_sequence_number) {
118 return false; 59 return false;
119 } 60 }
120 if (redundancy != other.redundancy) { 61 if (redundancy != other.redundancy) {
121 return false; 62 return false;
122 } 63 }
123 return true; 64 return true;
124 } 65 }
125 66
126 QuicData::~QuicData() { 67 QuicData::~QuicData() {
127 if (owns_buffer_) { 68 if (owns_buffer_) {
128 delete [] const_cast<char*>(buffer_); 69 delete [] const_cast<char*>(buffer_);
129 } 70 }
130 } 71 }
131 72
132 } // namespace net 73 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_protocol.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698