| Index: net/spdy/buffered_spdy_framer.cc
|
| diff --git a/net/spdy/buffered_spdy_framer.cc b/net/spdy/buffered_spdy_framer.cc
|
| deleted file mode 100644
|
| index 435e9d3b29872546dd5763cb2f54727639ba0ed4..0000000000000000000000000000000000000000
|
| --- a/net/spdy/buffered_spdy_framer.cc
|
| +++ /dev/null
|
| @@ -1,320 +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/buffered_spdy_framer.h"
|
| -
|
| -#include <algorithm>
|
| -#include <utility>
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/memory/ptr_util.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "net/spdy/platform/api/spdy_estimate_memory_usage.h"
|
| -
|
| -namespace net {
|
| -
|
| -namespace {
|
| -
|
| -// GOAWAY frame debug data is only buffered up to this many bytes.
|
| -size_t kGoAwayDebugDataMaxSize = 1024;
|
| -
|
| -} // namespace
|
| -
|
| -BufferedSpdyFramer::BufferedSpdyFramer()
|
| - : spdy_framer_(SpdyFramer::ENABLE_COMPRESSION),
|
| - visitor_(NULL),
|
| - frames_received_(0) {}
|
| -
|
| -BufferedSpdyFramer::~BufferedSpdyFramer() {
|
| -}
|
| -
|
| -void BufferedSpdyFramer::set_visitor(
|
| - BufferedSpdyFramerVisitorInterface* visitor) {
|
| - visitor_ = visitor;
|
| - spdy_framer_.set_visitor(this);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::set_debug_visitor(
|
| - SpdyFramerDebugVisitorInterface* debug_visitor) {
|
| - spdy_framer_.set_debug_visitor(debug_visitor);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnError(SpdyFramer* spdy_framer) {
|
| - DCHECK(spdy_framer);
|
| - visitor_->OnError(spdy_framer->spdy_framer_error());
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnHeaders(SpdyStreamId stream_id,
|
| - bool has_priority,
|
| - int weight,
|
| - SpdyStreamId parent_stream_id,
|
| - bool exclusive,
|
| - bool fin,
|
| - bool end) {
|
| - frames_received_++;
|
| - DCHECK(!control_frame_fields_.get());
|
| - control_frame_fields_.reset(new ControlFrameFields());
|
| - control_frame_fields_->type = SpdyFrameType::HEADERS;
|
| - control_frame_fields_->stream_id = stream_id;
|
| - control_frame_fields_->has_priority = has_priority;
|
| - if (control_frame_fields_->has_priority) {
|
| - control_frame_fields_->weight = weight;
|
| - control_frame_fields_->parent_stream_id = parent_stream_id;
|
| - control_frame_fields_->exclusive = exclusive;
|
| - }
|
| - control_frame_fields_->fin = fin;
|
| -
|
| - DCHECK_NE(stream_id, SpdyFramer::kInvalidStream);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnDataFrameHeader(SpdyStreamId stream_id,
|
| - size_t length,
|
| - bool fin) {
|
| - frames_received_++;
|
| - visitor_->OnDataFrameHeader(stream_id, length, fin);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnStreamFrameData(SpdyStreamId stream_id,
|
| - const char* data,
|
| - size_t len) {
|
| - visitor_->OnStreamFrameData(stream_id, data, len);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnStreamEnd(SpdyStreamId stream_id) {
|
| - visitor_->OnStreamEnd(stream_id);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnStreamPadding(SpdyStreamId stream_id, size_t len) {
|
| - visitor_->OnStreamPadding(stream_id, len);
|
| -}
|
| -
|
| -SpdyHeadersHandlerInterface* BufferedSpdyFramer::OnHeaderFrameStart(
|
| - SpdyStreamId stream_id) {
|
| - coalescer_.reset(new HeaderCoalescer());
|
| - return coalescer_.get();
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnHeaderFrameEnd(SpdyStreamId stream_id,
|
| - bool end_headers) {
|
| - if (coalescer_->error_seen()) {
|
| - visitor_->OnStreamError(stream_id,
|
| - "Could not parse Spdy Control Frame Header.");
|
| - control_frame_fields_.reset();
|
| - return;
|
| - }
|
| - DCHECK(control_frame_fields_.get());
|
| - switch (control_frame_fields_->type) {
|
| - case SpdyFrameType::HEADERS:
|
| - visitor_->OnHeaders(
|
| - control_frame_fields_->stream_id, control_frame_fields_->has_priority,
|
| - control_frame_fields_->weight,
|
| - control_frame_fields_->parent_stream_id,
|
| - control_frame_fields_->exclusive, control_frame_fields_->fin,
|
| - coalescer_->release_headers());
|
| - break;
|
| - case SpdyFrameType::PUSH_PROMISE:
|
| - visitor_->OnPushPromise(control_frame_fields_->stream_id,
|
| - control_frame_fields_->promised_stream_id,
|
| - coalescer_->release_headers());
|
| - break;
|
| - default:
|
| - DCHECK(false) << "Unexpect control frame type: "
|
| - << control_frame_fields_->type;
|
| - break;
|
| - }
|
| - control_frame_fields_.reset(NULL);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnSettings(bool clear_persisted) {
|
| - visitor_->OnSettings();
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnSetting(SpdySettingsIds id, uint32_t value) {
|
| - visitor_->OnSetting(id, value);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnSettingsAck() {
|
| - visitor_->OnSettingsAck();
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnSettingsEnd() {
|
| - visitor_->OnSettingsEnd();
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnPing(SpdyPingId unique_id, bool is_ack) {
|
| - visitor_->OnPing(unique_id, is_ack);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnRstStream(SpdyStreamId stream_id,
|
| - SpdyErrorCode error_code) {
|
| - visitor_->OnRstStream(stream_id, error_code);
|
| -}
|
| -void BufferedSpdyFramer::OnGoAway(SpdyStreamId last_accepted_stream_id,
|
| - SpdyErrorCode error_code) {
|
| - DCHECK(!goaway_fields_);
|
| - goaway_fields_.reset(new GoAwayFields());
|
| - goaway_fields_->last_accepted_stream_id = last_accepted_stream_id;
|
| - goaway_fields_->error_code = error_code;
|
| -}
|
| -
|
| -bool BufferedSpdyFramer::OnGoAwayFrameData(const char* goaway_data,
|
| - size_t len) {
|
| - if (len > 0) {
|
| - if (goaway_fields_->debug_data.size() < kGoAwayDebugDataMaxSize) {
|
| - goaway_fields_->debug_data.append(
|
| - goaway_data, std::min(len, kGoAwayDebugDataMaxSize -
|
| - goaway_fields_->debug_data.size()));
|
| - }
|
| - return true;
|
| - }
|
| - visitor_->OnGoAway(goaway_fields_->last_accepted_stream_id,
|
| - goaway_fields_->error_code, goaway_fields_->debug_data);
|
| - goaway_fields_.reset();
|
| - return true;
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnWindowUpdate(SpdyStreamId stream_id,
|
| - int delta_window_size) {
|
| - visitor_->OnWindowUpdate(stream_id, delta_window_size);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnPushPromise(SpdyStreamId stream_id,
|
| - SpdyStreamId promised_stream_id,
|
| - bool end) {
|
| - frames_received_++;
|
| - DCHECK(!control_frame_fields_.get());
|
| - control_frame_fields_.reset(new ControlFrameFields());
|
| - control_frame_fields_->type = SpdyFrameType::PUSH_PROMISE;
|
| - control_frame_fields_->stream_id = stream_id;
|
| - control_frame_fields_->promised_stream_id = promised_stream_id;
|
| -
|
| - DCHECK_NE(stream_id, SpdyFramer::kInvalidStream);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnAltSvc(
|
| - SpdyStreamId stream_id,
|
| - SpdyStringPiece origin,
|
| - const SpdyAltSvcWireFormat::AlternativeServiceVector& altsvc_vector) {
|
| - visitor_->OnAltSvc(stream_id, origin, altsvc_vector);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::OnContinuation(SpdyStreamId stream_id, bool end) {
|
| -}
|
| -
|
| -bool BufferedSpdyFramer::OnUnknownFrame(SpdyStreamId stream_id,
|
| - uint8_t frame_type) {
|
| - return visitor_->OnUnknownFrame(stream_id, frame_type);
|
| -}
|
| -
|
| -size_t BufferedSpdyFramer::ProcessInput(const char* data, size_t len) {
|
| - return spdy_framer_.ProcessInput(data, len);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::UpdateHeaderDecoderTableSize(uint32_t value) {
|
| - spdy_framer_.UpdateHeaderDecoderTableSize(value);
|
| -}
|
| -
|
| -void BufferedSpdyFramer::Reset() {
|
| - spdy_framer_.Reset();
|
| -}
|
| -
|
| -SpdyFramer::SpdyFramerError BufferedSpdyFramer::spdy_framer_error() const {
|
| - return spdy_framer_.spdy_framer_error();
|
| -}
|
| -
|
| -SpdyFramer::SpdyState BufferedSpdyFramer::state() const {
|
| - return spdy_framer_.state();
|
| -}
|
| -
|
| -bool BufferedSpdyFramer::MessageFullyRead() {
|
| - return state() == SpdyFramer::SPDY_FRAME_COMPLETE;
|
| -}
|
| -
|
| -bool BufferedSpdyFramer::HasError() {
|
| - return spdy_framer_.HasError();
|
| -}
|
| -
|
| -// TODO(jgraettinger): Eliminate uses of this method (prefer
|
| -// SpdyRstStreamIR).
|
| -std::unique_ptr<SpdySerializedFrame> BufferedSpdyFramer::CreateRstStream(
|
| - SpdyStreamId stream_id,
|
| - SpdyErrorCode error_code) const {
|
| - SpdyRstStreamIR rst_ir(stream_id, error_code);
|
| - return base::MakeUnique<SpdySerializedFrame>(
|
| - spdy_framer_.SerializeRstStream(rst_ir));
|
| -}
|
| -
|
| -// TODO(jgraettinger): Eliminate uses of this method (prefer
|
| -// SpdySettingsIR).
|
| -std::unique_ptr<SpdySerializedFrame> BufferedSpdyFramer::CreateSettings(
|
| - const SettingsMap& values) const {
|
| - SpdySettingsIR settings_ir;
|
| - for (SettingsMap::const_iterator it = values.begin(); it != values.end();
|
| - ++it) {
|
| - settings_ir.AddSetting(it->first, it->second);
|
| - }
|
| - return base::MakeUnique<SpdySerializedFrame>(
|
| - spdy_framer_.SerializeSettings(settings_ir));
|
| -}
|
| -
|
| -// TODO(jgraettinger): Eliminate uses of this method (prefer SpdyPingIR).
|
| -std::unique_ptr<SpdySerializedFrame> BufferedSpdyFramer::CreatePingFrame(
|
| - SpdyPingId unique_id,
|
| - bool is_ack) const {
|
| - SpdyPingIR ping_ir(unique_id);
|
| - ping_ir.set_is_ack(is_ack);
|
| - return base::MakeUnique<SpdySerializedFrame>(
|
| - spdy_framer_.SerializePing(ping_ir));
|
| -}
|
| -
|
| -// TODO(jgraettinger): Eliminate uses of this method (prefer
|
| -// SpdyWindowUpdateIR).
|
| -std::unique_ptr<SpdySerializedFrame> BufferedSpdyFramer::CreateWindowUpdate(
|
| - SpdyStreamId stream_id,
|
| - uint32_t delta_window_size) const {
|
| - SpdyWindowUpdateIR update_ir(stream_id, delta_window_size);
|
| - return base::MakeUnique<SpdySerializedFrame>(
|
| - spdy_framer_.SerializeWindowUpdate(update_ir));
|
| -}
|
| -
|
| -// TODO(jgraettinger): Eliminate uses of this method (prefer SpdyDataIR).
|
| -std::unique_ptr<SpdySerializedFrame> BufferedSpdyFramer::CreateDataFrame(
|
| - SpdyStreamId stream_id,
|
| - const char* data,
|
| - uint32_t len,
|
| - SpdyDataFlags flags) {
|
| - SpdyDataIR data_ir(stream_id, SpdyStringPiece(data, len));
|
| - data_ir.set_fin((flags & DATA_FLAG_FIN) != 0);
|
| - return base::MakeUnique<SpdySerializedFrame>(
|
| - spdy_framer_.SerializeData(data_ir));
|
| -}
|
| -
|
| -// TODO(jgraettinger): Eliminate uses of this method (prefer
|
| -// SpdyPriorityIR).
|
| -std::unique_ptr<SpdySerializedFrame> BufferedSpdyFramer::CreatePriority(
|
| - SpdyStreamId stream_id,
|
| - SpdyStreamId dependency_id,
|
| - int weight,
|
| - bool exclusive) const {
|
| - SpdyPriorityIR priority_ir(stream_id, dependency_id, weight, exclusive);
|
| - return base::MakeUnique<SpdySerializedFrame>(
|
| - spdy_framer_.SerializePriority(priority_ir));
|
| -}
|
| -
|
| -SpdyPriority BufferedSpdyFramer::GetHighestPriority() const {
|
| - return spdy_framer_.GetHighestPriority();
|
| -}
|
| -
|
| -size_t BufferedSpdyFramer::EstimateMemoryUsage() const {
|
| - return SpdyEstimateMemoryUsage(spdy_framer_) +
|
| - SpdyEstimateMemoryUsage(coalescer_) +
|
| - SpdyEstimateMemoryUsage(control_frame_fields_) +
|
| - SpdyEstimateMemoryUsage(goaway_fields_);
|
| -}
|
| -
|
| -size_t BufferedSpdyFramer::GoAwayFields::EstimateMemoryUsage() const {
|
| - return SpdyEstimateMemoryUsage(debug_data);
|
| -}
|
| -
|
| -} // namespace net
|
|
|