Index: net/spdy/spdy_protocol.cc |
diff --git a/net/spdy/spdy_protocol.cc b/net/spdy/spdy_protocol.cc |
deleted file mode 100644 |
index 7d287cafc081ff0fed99fd21548da0c93307c833..0000000000000000000000000000000000000000 |
--- a/net/spdy/spdy_protocol.cc |
+++ /dev/null |
@@ -1,388 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "net/spdy/spdy_protocol.h" |
- |
-#include <ostream> |
- |
-#include "base/memory/ptr_util.h" |
-#include "net/spdy/spdy_bug_tracker.h" |
- |
-namespace net { |
- |
-const char* const kHttp2ConnectionHeaderPrefix = |
- "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"; |
- |
-std::ostream& operator<<(std::ostream& out, SpdySettingsIds id) { |
- return out << static_cast<uint16_t>(id); |
-} |
- |
-std::ostream& operator<<(std::ostream& out, SpdyFrameType frame_type) { |
- return out << SerializeFrameType(frame_type); |
-} |
- |
-SpdyPriority ClampSpdy3Priority(SpdyPriority priority) { |
- if (priority < kV3HighestPriority) { |
- SPDY_BUG << "Invalid priority: " << static_cast<int>(priority); |
- return kV3HighestPriority; |
- } |
- if (priority > kV3LowestPriority) { |
- SPDY_BUG << "Invalid priority: " << static_cast<int>(priority); |
- return kV3LowestPriority; |
- } |
- return priority; |
-} |
- |
-int ClampHttp2Weight(int weight) { |
- if (weight < kHttp2MinStreamWeight) { |
- SPDY_BUG << "Invalid weight: " << weight; |
- return kHttp2MinStreamWeight; |
- } |
- if (weight > kHttp2MaxStreamWeight) { |
- SPDY_BUG << "Invalid weight: " << weight; |
- return kHttp2MaxStreamWeight; |
- } |
- return weight; |
-} |
- |
-int Spdy3PriorityToHttp2Weight(SpdyPriority priority) { |
- priority = ClampSpdy3Priority(priority); |
- const float kSteps = 255.9f / 7.f; |
- return static_cast<int>(kSteps * (7.f - priority)) + 1; |
-} |
- |
-SpdyPriority Http2WeightToSpdy3Priority(int weight) { |
- weight = ClampHttp2Weight(weight); |
- const float kSteps = 255.9f / 7.f; |
- return static_cast<SpdyPriority>(7.f - (weight - 1) / kSteps); |
-} |
- |
-bool IsDefinedFrameType(uint8_t frame_type_field) { |
- return frame_type_field <= SerializeFrameType(SpdyFrameType::MAX_FRAME_TYPE); |
-} |
- |
-SpdyFrameType ParseFrameType(uint8_t frame_type_field) { |
- SPDY_BUG_IF(!IsDefinedFrameType(frame_type_field)) |
- << "Frame type not defined: " << static_cast<int>(frame_type_field); |
- return static_cast<SpdyFrameType>(frame_type_field); |
-} |
- |
-uint8_t SerializeFrameType(SpdyFrameType frame_type) { |
- return static_cast<uint8_t>(frame_type); |
-} |
- |
-bool IsValidHTTP2FrameStreamId(SpdyStreamId current_frame_stream_id, |
- SpdyFrameType frame_type_field) { |
- if (current_frame_stream_id == 0) { |
- switch (frame_type_field) { |
- case SpdyFrameType::DATA: |
- case SpdyFrameType::HEADERS: |
- case SpdyFrameType::PRIORITY: |
- case SpdyFrameType::RST_STREAM: |
- case SpdyFrameType::CONTINUATION: |
- case SpdyFrameType::PUSH_PROMISE: |
- // These frame types must specify a stream |
- return false; |
- default: |
- return true; |
- } |
- } else { |
- switch (frame_type_field) { |
- case SpdyFrameType::GOAWAY: |
- case SpdyFrameType::SETTINGS: |
- case SpdyFrameType::PING: |
- // These frame types must not specify a stream |
- return false; |
- default: |
- return true; |
- } |
- } |
-} |
- |
-const char* FrameTypeToString(SpdyFrameType frame_type) { |
- switch (frame_type) { |
- case SpdyFrameType::DATA: |
- return "DATA"; |
- case SpdyFrameType::RST_STREAM: |
- return "RST_STREAM"; |
- case SpdyFrameType::SETTINGS: |
- return "SETTINGS"; |
- case SpdyFrameType::PING: |
- return "PING"; |
- case SpdyFrameType::GOAWAY: |
- return "GOAWAY"; |
- case SpdyFrameType::HEADERS: |
- return "HEADERS"; |
- case SpdyFrameType::WINDOW_UPDATE: |
- return "WINDOW_UPDATE"; |
- case SpdyFrameType::PUSH_PROMISE: |
- return "PUSH_PROMISE"; |
- case SpdyFrameType::CONTINUATION: |
- return "CONTINUATION"; |
- case SpdyFrameType::PRIORITY: |
- return "PRIORITY"; |
- case SpdyFrameType::ALTSVC: |
- return "ALTSVC"; |
- case SpdyFrameType::EXTENSION: |
- return "EXTENSION (unspecified)"; |
- } |
- return "UNKNOWN_FRAME_TYPE"; |
-} |
- |
-bool ParseSettingsId(uint16_t wire_setting_id, SpdySettingsIds* setting_id) { |
- if (wire_setting_id < SETTINGS_MIN || wire_setting_id > SETTINGS_MAX) { |
- return false; |
- } |
- |
- *setting_id = static_cast<SpdySettingsIds>(wire_setting_id); |
- return true; |
-} |
- |
-bool SettingsIdToString(SpdySettingsIds id, const char** settings_id_string) { |
- switch (id) { |
- case SETTINGS_HEADER_TABLE_SIZE: |
- *settings_id_string = "SETTINGS_HEADER_TABLE_SIZE"; |
- return true; |
- case SETTINGS_ENABLE_PUSH: |
- *settings_id_string = "SETTINGS_ENABLE_PUSH"; |
- return true; |
- case SETTINGS_MAX_CONCURRENT_STREAMS: |
- *settings_id_string = "SETTINGS_MAX_CONCURRENT_STREAMS"; |
- return true; |
- case SETTINGS_INITIAL_WINDOW_SIZE: |
- *settings_id_string = "SETTINGS_INITIAL_WINDOW_SIZE"; |
- return true; |
- case SETTINGS_MAX_FRAME_SIZE: |
- *settings_id_string = "SETTINGS_MAX_FRAME_SIZE"; |
- return true; |
- case SETTINGS_MAX_HEADER_LIST_SIZE: |
- *settings_id_string = "SETTINGS_MAX_HEADER_LIST_SIZE"; |
- return true; |
- } |
- |
- *settings_id_string = "SETTINGS_UNKNOWN"; |
- return false; |
-} |
- |
-SpdyErrorCode ParseErrorCode(uint32_t wire_error_code) { |
- if (wire_error_code > ERROR_CODE_MAX) { |
- return ERROR_CODE_INTERNAL_ERROR; |
- } |
- |
- return static_cast<SpdyErrorCode>(wire_error_code); |
-} |
- |
-const char* ErrorCodeToString(SpdyErrorCode error_code) { |
- switch (error_code) { |
- case ERROR_CODE_NO_ERROR: |
- return "NO_ERROR"; |
- case ERROR_CODE_PROTOCOL_ERROR: |
- return "PROTOCOL_ERROR"; |
- case ERROR_CODE_INTERNAL_ERROR: |
- return "INTERNAL_ERROR"; |
- case ERROR_CODE_FLOW_CONTROL_ERROR: |
- return "FLOW_CONTROL_ERROR"; |
- case ERROR_CODE_SETTINGS_TIMEOUT: |
- return "SETTINGS_TIMEOUT"; |
- case ERROR_CODE_STREAM_CLOSED: |
- return "STREAM_CLOSED"; |
- case ERROR_CODE_FRAME_SIZE_ERROR: |
- return "FRAME_SIZE_ERROR"; |
- case ERROR_CODE_REFUSED_STREAM: |
- return "REFUSED_STREAM"; |
- case ERROR_CODE_CANCEL: |
- return "CANCEL"; |
- case ERROR_CODE_COMPRESSION_ERROR: |
- return "COMPRESSION_ERROR"; |
- case ERROR_CODE_CONNECT_ERROR: |
- return "CONNECT_ERROR"; |
- case ERROR_CODE_ENHANCE_YOUR_CALM: |
- return "ENHANCE_YOUR_CALM"; |
- case ERROR_CODE_INADEQUATE_SECURITY: |
- return "INADEQUATE_SECURITY"; |
- case ERROR_CODE_HTTP_1_1_REQUIRED: |
- return "HTTP_1_1_REQUIRED"; |
- } |
- return "UNKNOWN_ERROR_CODE"; |
-} |
- |
-const char* const kHttp2Npn = "h2"; |
- |
-SpdyFrameWithHeaderBlockIR::SpdyFrameWithHeaderBlockIR( |
- SpdyStreamId stream_id, |
- SpdyHeaderBlock header_block) |
- : SpdyFrameWithFinIR(stream_id), header_block_(std::move(header_block)) {} |
- |
-SpdyFrameWithHeaderBlockIR::~SpdyFrameWithHeaderBlockIR() {} |
- |
-SpdyDataIR::SpdyDataIR(SpdyStreamId stream_id, SpdyStringPiece data) |
- : SpdyFrameWithFinIR(stream_id), |
- data_(nullptr), |
- data_len_(0), |
- padded_(false), |
- padding_payload_len_(0) { |
- SetDataDeep(data); |
-} |
- |
-SpdyDataIR::SpdyDataIR(SpdyStreamId stream_id, const char* data) |
- : SpdyDataIR(stream_id, SpdyStringPiece(data)) {} |
- |
-SpdyDataIR::SpdyDataIR(SpdyStreamId stream_id, SpdyString data) |
- : SpdyFrameWithFinIR(stream_id), |
- data_store_(base::MakeUnique<SpdyString>(std::move(data))), |
- data_(data_store_->data()), |
- data_len_(data_store_->size()), |
- padded_(false), |
- padding_payload_len_(0) {} |
- |
-SpdyDataIR::SpdyDataIR(SpdyStreamId stream_id) |
- : SpdyFrameWithFinIR(stream_id), |
- data_(nullptr), |
- data_len_(0), |
- padded_(false), |
- padding_payload_len_(0) {} |
- |
-SpdyDataIR::~SpdyDataIR() {} |
- |
-void SpdyDataIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitData(*this); |
-} |
- |
-SpdyFrameType SpdyDataIR::frame_type() const { |
- return SpdyFrameType::DATA; |
-} |
- |
-SpdyRstStreamIR::SpdyRstStreamIR(SpdyStreamId stream_id, |
- SpdyErrorCode error_code) |
- : SpdyFrameWithStreamIdIR(stream_id) { |
- set_error_code(error_code); |
-} |
- |
-SpdyRstStreamIR::~SpdyRstStreamIR() {} |
- |
-void SpdyRstStreamIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitRstStream(*this); |
-} |
- |
-SpdyFrameType SpdyRstStreamIR::frame_type() const { |
- return SpdyFrameType::RST_STREAM; |
-} |
- |
-SpdySettingsIR::SpdySettingsIR() : is_ack_(false) {} |
- |
-SpdySettingsIR::~SpdySettingsIR() {} |
- |
-void SpdySettingsIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitSettings(*this); |
-} |
- |
-SpdyFrameType SpdySettingsIR::frame_type() const { |
- return SpdyFrameType::SETTINGS; |
-} |
- |
-void SpdyPingIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitPing(*this); |
-} |
- |
-SpdyFrameType SpdyPingIR::frame_type() const { |
- return SpdyFrameType::PING; |
-} |
- |
-SpdyGoAwayIR::SpdyGoAwayIR(SpdyStreamId last_good_stream_id, |
- SpdyErrorCode error_code, |
- SpdyStringPiece description) |
- : description_(description) { |
- set_last_good_stream_id(last_good_stream_id); |
- set_error_code(error_code); |
-} |
- |
-SpdyGoAwayIR::SpdyGoAwayIR(SpdyStreamId last_good_stream_id, |
- SpdyErrorCode error_code, |
- const char* description) |
- : SpdyGoAwayIR(last_good_stream_id, |
- error_code, |
- SpdyStringPiece(description)) {} |
- |
-SpdyGoAwayIR::SpdyGoAwayIR(SpdyStreamId last_good_stream_id, |
- SpdyErrorCode error_code, |
- SpdyString description) |
- : description_store_(std::move(description)), |
- description_(description_store_) { |
- set_last_good_stream_id(last_good_stream_id); |
- set_error_code(error_code); |
-} |
- |
-SpdyGoAwayIR::~SpdyGoAwayIR() {} |
- |
-void SpdyGoAwayIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitGoAway(*this); |
-} |
- |
-SpdyFrameType SpdyGoAwayIR::frame_type() const { |
- return SpdyFrameType::GOAWAY; |
-} |
- |
-SpdyContinuationIR::SpdyContinuationIR(SpdyStreamId stream_id) |
- : SpdyFrameWithStreamIdIR(stream_id), end_headers_(false) { |
- encoding_ = base::MakeUnique<SpdyString>(); |
-} |
- |
-SpdyContinuationIR::~SpdyContinuationIR() {} |
- |
-void SpdyContinuationIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitContinuation(*this); |
-} |
- |
-SpdyFrameType SpdyContinuationIR::frame_type() const { |
- return SpdyFrameType::CONTINUATION; |
-} |
- |
-void SpdyHeadersIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitHeaders(*this); |
-} |
- |
-SpdyFrameType SpdyHeadersIR::frame_type() const { |
- return SpdyFrameType::HEADERS; |
-} |
- |
-void SpdyWindowUpdateIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitWindowUpdate(*this); |
-} |
- |
-SpdyFrameType SpdyWindowUpdateIR::frame_type() const { |
- return SpdyFrameType::WINDOW_UPDATE; |
-} |
- |
-void SpdyPushPromiseIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitPushPromise(*this); |
-} |
- |
-SpdyFrameType SpdyPushPromiseIR::frame_type() const { |
- return SpdyFrameType::PUSH_PROMISE; |
-} |
- |
-SpdyAltSvcIR::SpdyAltSvcIR(SpdyStreamId stream_id) |
- : SpdyFrameWithStreamIdIR(stream_id) { |
-} |
- |
-SpdyAltSvcIR::~SpdyAltSvcIR() { |
-} |
- |
-void SpdyAltSvcIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitAltSvc(*this); |
-} |
- |
-SpdyFrameType SpdyAltSvcIR::frame_type() const { |
- return SpdyFrameType::ALTSVC; |
-} |
- |
-void SpdyPriorityIR::Visit(SpdyFrameVisitor* visitor) const { |
- return visitor->VisitPriority(*this); |
-} |
- |
-SpdyFrameType SpdyPriorityIR::frame_type() const { |
- return SpdyFrameType::PRIORITY; |
-} |
- |
-} // namespace net |