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 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 QuicTag QuicVersionToQuicTag(const QuicVersion version) { | 152 QuicTag QuicVersionToQuicTag(const QuicVersion version) { |
153 switch (version) { | 153 switch (version) { |
154 case QUIC_VERSION_12: | 154 case QUIC_VERSION_12: |
155 return MakeQuicTag('Q', '0', '1', '2'); | 155 return MakeQuicTag('Q', '0', '1', '2'); |
156 case QUIC_VERSION_13: | 156 case QUIC_VERSION_13: |
157 return MakeQuicTag('Q', '0', '1', '3'); | 157 return MakeQuicTag('Q', '0', '1', '3'); |
158 case QUIC_VERSION_14: | 158 case QUIC_VERSION_14: |
159 return MakeQuicTag('Q', '0', '1', '4'); | 159 return MakeQuicTag('Q', '0', '1', '4'); |
160 case QUIC_VERSION_15: | 160 case QUIC_VERSION_15: |
161 return MakeQuicTag('Q', '0', '1', '5'); | 161 return MakeQuicTag('Q', '0', '1', '5'); |
| 162 case QUIC_VERSION_16: |
| 163 return MakeQuicTag('Q', '0', '1', '6'); |
162 default: | 164 default: |
163 // This shold be an ERROR because we should never attempt to convert an | 165 // This shold be an ERROR because we should never attempt to convert an |
164 // invalid QuicVersion to be written to the wire. | 166 // invalid QuicVersion to be written to the wire. |
165 LOG(ERROR) << "Unsupported QuicVersion: " << version; | 167 LOG(ERROR) << "Unsupported QuicVersion: " << version; |
166 return 0; | 168 return 0; |
167 } | 169 } |
168 } | 170 } |
169 | 171 |
170 QuicVersion QuicTagToQuicVersion(const QuicTag version_tag) { | 172 QuicVersion QuicTagToQuicVersion(const QuicTag version_tag) { |
171 for (size_t i = 0; i < arraysize(kSupportedQuicVersions); ++i) { | 173 for (size_t i = 0; i < arraysize(kSupportedQuicVersions); ++i) { |
(...skipping 10 matching lines...) Expand all Loading... |
182 #define RETURN_STRING_LITERAL(x) \ | 184 #define RETURN_STRING_LITERAL(x) \ |
183 case x: \ | 185 case x: \ |
184 return #x | 186 return #x |
185 | 187 |
186 string QuicVersionToString(const QuicVersion version) { | 188 string QuicVersionToString(const QuicVersion version) { |
187 switch (version) { | 189 switch (version) { |
188 RETURN_STRING_LITERAL(QUIC_VERSION_12); | 190 RETURN_STRING_LITERAL(QUIC_VERSION_12); |
189 RETURN_STRING_LITERAL(QUIC_VERSION_13); | 191 RETURN_STRING_LITERAL(QUIC_VERSION_13); |
190 RETURN_STRING_LITERAL(QUIC_VERSION_14); | 192 RETURN_STRING_LITERAL(QUIC_VERSION_14); |
191 RETURN_STRING_LITERAL(QUIC_VERSION_15); | 193 RETURN_STRING_LITERAL(QUIC_VERSION_15); |
| 194 RETURN_STRING_LITERAL(QUIC_VERSION_16); |
192 default: | 195 default: |
193 return "QUIC_VERSION_UNSUPPORTED"; | 196 return "QUIC_VERSION_UNSUPPORTED"; |
194 } | 197 } |
195 } | 198 } |
196 | 199 |
197 string QuicVersionVectorToString(const QuicVersionVector& versions) { | 200 string QuicVersionVectorToString(const QuicVersionVector& versions) { |
198 string result = ""; | 201 string result = ""; |
199 for (size_t i = 0; i < versions.size(); ++i) { | 202 for (size_t i = 0; i < versions.size(); ++i) { |
200 if (i != 0) { | 203 if (i != 0) { |
201 result.append(","); | 204 result.append(","); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 } | 245 } |
243 | 246 |
244 void InsertMissingPacketsBetween(ReceivedPacketInfo* received_info, | 247 void InsertMissingPacketsBetween(ReceivedPacketInfo* received_info, |
245 QuicPacketSequenceNumber lower, | 248 QuicPacketSequenceNumber lower, |
246 QuicPacketSequenceNumber higher) { | 249 QuicPacketSequenceNumber higher) { |
247 for (QuicPacketSequenceNumber i = lower; i < higher; ++i) { | 250 for (QuicPacketSequenceNumber i = lower; i < higher; ++i) { |
248 received_info->missing_packets.insert(i); | 251 received_info->missing_packets.insert(i); |
249 } | 252 } |
250 } | 253 } |
251 | 254 |
252 SentPacketInfo::SentPacketInfo() | 255 QuicStopWaitingFrame::QuicStopWaitingFrame() |
253 : entropy_hash(0), | 256 : entropy_hash(0), |
254 least_unacked(0) { | 257 least_unacked(0) { |
255 } | 258 } |
256 | 259 |
257 SentPacketInfo::~SentPacketInfo() {} | 260 QuicStopWaitingFrame::~QuicStopWaitingFrame() {} |
258 | 261 |
259 QuicAckFrame::QuicAckFrame() {} | 262 QuicAckFrame::QuicAckFrame() {} |
260 | 263 |
261 QuicAckFrame::QuicAckFrame(QuicPacketSequenceNumber largest_observed, | 264 QuicAckFrame::QuicAckFrame(QuicPacketSequenceNumber largest_observed, |
262 QuicTime largest_observed_receive_time, | 265 QuicTime largest_observed_receive_time, |
263 QuicPacketSequenceNumber least_unacked) { | 266 QuicPacketSequenceNumber least_unacked) { |
264 received_info.largest_observed = largest_observed; | 267 received_info.largest_observed = largest_observed; |
265 received_info.entropy_hash = 0; | 268 received_info.entropy_hash = 0; |
266 sent_info.least_unacked = least_unacked; | 269 sent_info.least_unacked = least_unacked; |
267 sent_info.entropy_hash = 0; | 270 sent_info.entropy_hash = 0; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 QuicFrame::QuicFrame(QuicAckFrame* frame) | 317 QuicFrame::QuicFrame(QuicAckFrame* frame) |
315 : type(ACK_FRAME), | 318 : type(ACK_FRAME), |
316 ack_frame(frame) { | 319 ack_frame(frame) { |
317 } | 320 } |
318 | 321 |
319 QuicFrame::QuicFrame(QuicCongestionFeedbackFrame* frame) | 322 QuicFrame::QuicFrame(QuicCongestionFeedbackFrame* frame) |
320 : type(CONGESTION_FEEDBACK_FRAME), | 323 : type(CONGESTION_FEEDBACK_FRAME), |
321 congestion_feedback_frame(frame) { | 324 congestion_feedback_frame(frame) { |
322 } | 325 } |
323 | 326 |
| 327 QuicFrame::QuicFrame(QuicStopWaitingFrame* frame) |
| 328 : type(STOP_WAITING_FRAME), |
| 329 stop_waiting_frame(frame) { |
| 330 } |
| 331 |
324 QuicFrame::QuicFrame(QuicRstStreamFrame* frame) | 332 QuicFrame::QuicFrame(QuicRstStreamFrame* frame) |
325 : type(RST_STREAM_FRAME), | 333 : type(RST_STREAM_FRAME), |
326 rst_stream_frame(frame) { | 334 rst_stream_frame(frame) { |
327 } | 335 } |
328 | 336 |
329 QuicFrame::QuicFrame(QuicConnectionCloseFrame* frame) | 337 QuicFrame::QuicFrame(QuicConnectionCloseFrame* frame) |
330 : type(CONNECTION_CLOSE_FRAME), | 338 : type(CONNECTION_CLOSE_FRAME), |
331 connection_close_frame(frame) { | 339 connection_close_frame(frame) { |
332 } | 340 } |
333 | 341 |
334 QuicFrame::QuicFrame(QuicGoAwayFrame* frame) | 342 QuicFrame::QuicFrame(QuicGoAwayFrame* frame) |
335 : type(GOAWAY_FRAME), | 343 : type(GOAWAY_FRAME), |
336 goaway_frame(frame) { | 344 goaway_frame(frame) { |
337 } | 345 } |
338 | 346 |
339 QuicFrame::QuicFrame(QuicWindowUpdateFrame* frame) | 347 QuicFrame::QuicFrame(QuicWindowUpdateFrame* frame) |
340 : type(WINDOW_UPDATE_FRAME), | 348 : type(WINDOW_UPDATE_FRAME), |
341 window_update_frame(frame) { | 349 window_update_frame(frame) { |
342 } | 350 } |
343 | 351 |
344 QuicFrame::QuicFrame(QuicBlockedFrame* frame) | 352 QuicFrame::QuicFrame(QuicBlockedFrame* frame) |
345 : type(BLOCKED_FRAME), | 353 : type(BLOCKED_FRAME), |
346 blocked_frame(frame) { | 354 blocked_frame(frame) { |
347 } | 355 } |
348 | 356 |
349 QuicFecData::QuicFecData() : fec_group(0) {} | 357 QuicFecData::QuicFecData() : fec_group(0) {} |
350 | 358 |
351 ostream& operator<<(ostream& os, const SentPacketInfo& sent_info) { | 359 ostream& operator<<(ostream& os, const QuicStopWaitingFrame& sent_info) { |
352 os << "entropy_hash: " << static_cast<int>(sent_info.entropy_hash) | 360 os << "entropy_hash: " << static_cast<int>(sent_info.entropy_hash) |
353 << " least_unacked: " << sent_info.least_unacked; | 361 << " least_unacked: " << sent_info.least_unacked; |
354 return os; | 362 return os; |
355 } | 363 } |
356 | 364 |
357 ostream& operator<<(ostream& os, const ReceivedPacketInfo& received_info) { | 365 ostream& operator<<(ostream& os, const ReceivedPacketInfo& received_info) { |
358 os << "entropy_hash: " << static_cast<int>(received_info.entropy_hash) | 366 os << "entropy_hash: " << static_cast<int>(received_info.entropy_hash) |
359 << " is_truncated: " << received_info.is_truncated | 367 << " is_truncated: " << received_info.is_truncated |
360 << " largest_observed: " << received_info.largest_observed | 368 << " largest_observed: " << received_info.largest_observed |
361 << " missing_packets: [ "; | 369 << " missing_packets: [ "; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 } | 415 } |
408 case ACK_FRAME: { | 416 case ACK_FRAME: { |
409 os << "type { ACK_FRAME } " << *(frame.ack_frame); | 417 os << "type { ACK_FRAME } " << *(frame.ack_frame); |
410 break; | 418 break; |
411 } | 419 } |
412 case CONGESTION_FEEDBACK_FRAME: { | 420 case CONGESTION_FEEDBACK_FRAME: { |
413 os << "type { CONGESTION_FEEDBACK_FRAME } " | 421 os << "type { CONGESTION_FEEDBACK_FRAME } " |
414 << *(frame.congestion_feedback_frame); | 422 << *(frame.congestion_feedback_frame); |
415 break; | 423 break; |
416 } | 424 } |
| 425 case STOP_WAITING_FRAME: { |
| 426 os << "type { STOP_WAITING_FRAME } " << *(frame.stop_waiting_frame); |
| 427 break; |
| 428 } |
417 default: { | 429 default: { |
418 LOG(ERROR) << "Unknown frame type: " << frame.type; | 430 LOG(ERROR) << "Unknown frame type: " << frame.type; |
419 break; | 431 break; |
420 } | 432 } |
421 } | 433 } |
422 return os; | 434 return os; |
423 } | 435 } |
424 | 436 |
425 ostream& operator<<(ostream& os, const QuicRstStreamFrame& rst_frame) { | 437 ostream& operator<<(ostream& os, const QuicRstStreamFrame& rst_frame) { |
426 os << "stream_id { " << rst_frame.stream_id << " } " | 438 os << "stream_id { " << rst_frame.stream_id << " } " |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
614 break; | 626 break; |
615 case STREAM_FRAME: | 627 case STREAM_FRAME: |
616 delete it->stream_frame; | 628 delete it->stream_frame; |
617 break; | 629 break; |
618 case ACK_FRAME: | 630 case ACK_FRAME: |
619 delete it->ack_frame; | 631 delete it->ack_frame; |
620 break; | 632 break; |
621 case CONGESTION_FEEDBACK_FRAME: | 633 case CONGESTION_FEEDBACK_FRAME: |
622 delete it->congestion_feedback_frame; | 634 delete it->congestion_feedback_frame; |
623 break; | 635 break; |
| 636 case STOP_WAITING_FRAME: |
| 637 delete it->stop_waiting_frame; |
| 638 break; |
624 case RST_STREAM_FRAME: | 639 case RST_STREAM_FRAME: |
625 delete it->rst_stream_frame; | 640 delete it->rst_stream_frame; |
626 break; | 641 break; |
627 case CONNECTION_CLOSE_FRAME: | 642 case CONNECTION_CLOSE_FRAME: |
628 delete it->connection_close_frame; | 643 delete it->connection_close_frame; |
629 break; | 644 break; |
630 case GOAWAY_FRAME: | 645 case GOAWAY_FRAME: |
631 delete it->goaway_frame; | 646 delete it->goaway_frame; |
632 break; | 647 break; |
633 case WINDOW_UPDATE_FRAME: | 648 case WINDOW_UPDATE_FRAME: |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
714 return os; | 729 return os; |
715 } | 730 } |
716 | 731 |
717 WriteResult::WriteResult(WriteStatus status, | 732 WriteResult::WriteResult(WriteStatus status, |
718 int bytes_written_or_error_code) | 733 int bytes_written_or_error_code) |
719 : status(status), | 734 : status(status), |
720 bytes_written(bytes_written_or_error_code) { | 735 bytes_written(bytes_written_or_error_code) { |
721 } | 736 } |
722 | 737 |
723 } // namespace net | 738 } // namespace net |
OLD | NEW |