| 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 |