diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-18 20:46:11 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-18 20:46:11 +0000 |
commit | d7a9cbaf97466fd49d02981bece643be099c9803 (patch) | |
tree | b03016540d5f0b4cc3aec464ef17451b448f870a /net/tools | |
parent | 8184aff265aa5e81156262d5f0125c481dde7b4a (diff) | |
download | chromium_src-d7a9cbaf97466fd49d02981bece643be099c9803.zip chromium_src-d7a9cbaf97466fd49d02981bece643be099c9803.tar.gz chromium_src-d7a9cbaf97466fd49d02981bece643be099c9803.tar.bz2 |
SPDY - FlipServer - changes to use BufferedSpdyFramer.
TEST=network unittests
R=wtc
Review URL: http://codereview.chromium.org/9174026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@118139 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/tools')
-rw-r--r-- | net/tools/flip_server/spdy_interface.cc | 60 | ||||
-rw-r--r-- | net/tools/flip_server/spdy_interface.h | 22 |
2 files changed, 52 insertions, 30 deletions
diff --git a/net/tools/flip_server/spdy_interface.cc b/net/tools/flip_server/spdy_interface.cc index 8f7a687..286ad12 100644 --- a/net/tools/flip_server/spdy_interface.cc +++ b/net/tools/flip_server/spdy_interface.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// 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. @@ -21,6 +21,7 @@ using spdy::RST_STREAM; using spdy::SETTINGS_MAX_CONCURRENT_STREAMS; using spdy::SYN_REPLY; using spdy::SYN_STREAM; +using spdy::BufferedSpdyFramer; using spdy::SettingsFlagsAndId; using spdy::SpdyControlFrame; using spdy::SpdySettingsControlFrame; @@ -65,7 +66,7 @@ SpdySM::SpdySM(SMConnection* connection, MemoryCache* memory_cache, FlipAcceptor* acceptor) : seq_num_(0), - spdy_framer_(new SpdyFramer), + buffered_spdy_framer_(new BufferedSpdyFramer), valid_spdy_session_(false), connection_(connection), client_output_list_(connection->output_list()), @@ -75,11 +76,11 @@ SpdySM::SpdySM(SMConnection* connection, acceptor_(acceptor), memory_cache_(memory_cache), close_on_error_(false) { - spdy_framer_->set_visitor(this); + buffered_spdy_framer_->set_visitor(this); } SpdySM::~SpdySM() { - delete spdy_framer_; + delete buffered_spdy_framer_; } void SpdySM::InitSMConnection(SMConnectionPoolInterface* connection_pool, @@ -153,7 +154,7 @@ int SpdySM::SpdyHandleNewStream(const SpdyControlFrame* frame, reinterpret_cast<const SpdySynStreamControlFrame*>(frame); *is_https_scheme = false; - parsed_headers = spdy_framer_->ParseHeaderBlock(frame, &headers); + parsed_headers = buffered_spdy_framer_->ParseHeaderBlock(frame, &headers); VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: OnSyn(" << syn_stream->stream_id() << ")"; VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: headers parsed?: " @@ -257,7 +258,7 @@ void SpdySM::OnControl(const SpdyControlFrame* frame) { break; case SYN_REPLY: - parsed_headers = spdy_framer_->ParseHeaderBlock(frame, &headers); + parsed_headers = buffered_spdy_framer_->ParseHeaderBlock(frame, &headers); DCHECK(parsed_headers); // TODO(willchan): if there is an error parsing headers, we // should send a RST_STREAM. @@ -289,7 +290,7 @@ bool SpdySM::OnControlFrameHeaderData( } void SpdySM::OnDataFrameHeader(const spdy::SpdyDataFrame* frame) { - DCHECK(false); + buffered_spdy_framer_->OnDataFrameHeader(frame); } void SpdySM::OnStreamFrameData(SpdyStreamId stream_id, @@ -314,8 +315,20 @@ bool SpdySM::OnCredentialFrameData(const char* frame_data, return false; } +void SpdySM::OnSyn(const spdy::SpdySynStreamControlFrame& frame, + const linked_ptr<spdy::SpdyHeaderBlock>& headers) { +} + +void SpdySM::OnSynReply(const spdy::SpdySynReplyControlFrame& frame, + const linked_ptr<spdy::SpdyHeaderBlock>& headers) { +} + +void SpdySM::OnHeaders(const spdy::SpdyHeadersControlFrame& frame, + const linked_ptr<spdy::SpdyHeaderBlock>& headers) { +} + size_t SpdySM::ProcessReadInput(const char* data, size_t len) { - return spdy_framer_->ProcessInput(data, len); + return buffered_spdy_framer_->ProcessInput(data, len); } size_t SpdySM::ProcessWriteInput(const char* data, size_t len) { @@ -323,16 +336,16 @@ size_t SpdySM::ProcessWriteInput(const char* data, size_t len) { } bool SpdySM::MessageFullyRead() const { - return spdy_framer_->MessageFullyRead(); + return buffered_spdy_framer_->MessageFullyRead(); } bool SpdySM::Error() const { - return close_on_error_ || spdy_framer_->HasError(); + return close_on_error_ || buffered_spdy_framer_->HasError(); } const char* SpdySM::ErrorAsString() const { DCHECK(Error()); - return SpdyFramer::ErrorCodeToString(spdy_framer_->error_code()); + return SpdyFramer::ErrorCodeToString(buffered_spdy_framer_->error_code()); } void SpdySM::ResetForNewInterface(int32 server_idx) { @@ -343,9 +356,9 @@ void SpdySM::ResetForNewInterface(int32 server_idx) { void SpdySM::ResetForNewConnection() { // seq_num is not cleared, intentionally. - delete spdy_framer_; - spdy_framer_ = new SpdyFramer; - spdy_framer_->set_visitor(this); + delete buffered_spdy_framer_; + buffered_spdy_framer_ = new BufferedSpdyFramer; + buffered_spdy_framer_->set_visitor(this); valid_spdy_session_ = false; client_output_ordering_.Reset(); next_outgoing_stream_id_ = 2; @@ -357,7 +370,7 @@ int SpdySM::PostAcceptHook() { SettingsFlagsAndId settings_id(SETTINGS_MAX_CONCURRENT_STREAMS); settings.push_back(SpdySetting(settings_id, 100)); SpdySettingsControlFrame* settings_frame = - spdy_framer_->CreateSettings(settings); + SpdyFramer::CreateSettings(settings); VLOG(1) << ACCEPTOR_CLIENT_IDENT << "Sending Settings Frame"; EnqueueDataFrame(new SpdyFrameDataFrame(settings_frame)); @@ -482,9 +495,8 @@ size_t SpdySM::SendSynStreamImpl(uint32 stream_id, } CopyHeaders(block, headers); - SpdySynStreamControlFrame* fsrcf = - spdy_framer_->CreateSynStream(stream_id, 0, 0, CONTROL_FLAG_NONE, true, - &block); + SpdySynStreamControlFrame* fsrcf = buffered_spdy_framer_->CreateSynStream( + stream_id, 0, 0, CONTROL_FLAG_NONE, true, &block); size_t df_size = fsrcf->length() + SpdyFrame::kHeaderSize; EnqueueDataFrame(new SpdyFrameDataFrame(fsrcf)); @@ -500,8 +512,8 @@ size_t SpdySM::SendSynReplyImpl(uint32 stream_id, const BalsaHeaders& headers) { headers.response_reason_phrase().as_string(); block["version"] = headers.response_version().as_string(); - SpdySynReplyControlFrame* fsrcf = - spdy_framer_->CreateSynReply(stream_id, CONTROL_FLAG_NONE, true, &block); + SpdySynReplyControlFrame* fsrcf = buffered_spdy_framer_->CreateSynReply( + stream_id, CONTROL_FLAG_NONE, true, &block); size_t df_size = fsrcf->length() + SpdyFrame::kHeaderSize; EnqueueDataFrame(new SpdyFrameDataFrame(fsrcf)); @@ -520,8 +532,8 @@ void SpdySM::SendDataFrameImpl(uint32 stream_id, const char* data, int64 len, // priority queue. Compression needs to be done // with late binding. if (len == 0) { - SpdyDataFrame* fdf = spdy_framer_->CreateDataFrame(stream_id, data, len, - flags); + SpdyDataFrame* fdf = buffered_spdy_framer_->CreateDataFrame( + stream_id, data, len, flags); EnqueueDataFrame(new SpdyFrameDataFrame(fdf)); return; } @@ -537,8 +549,8 @@ void SpdySM::SendDataFrameImpl(uint32 stream_id, const char* data, int64 len, if ((size < len) && (flags & DATA_FLAG_FIN)) chunk_flags = static_cast<SpdyDataFlags>(chunk_flags & ~DATA_FLAG_FIN); - SpdyDataFrame* fdf = spdy_framer_->CreateDataFrame(stream_id, data, size, - chunk_flags); + SpdyDataFrame* fdf = buffered_spdy_framer_->CreateDataFrame( + stream_id, data, size, chunk_flags); EnqueueDataFrame(new SpdyFrameDataFrame(fdf)); VLOG(2) << ACCEPTOR_CLIENT_IDENT << "SpdySM: Sending data frame " diff --git a/net/tools/flip_server/spdy_interface.h b/net/tools/flip_server/spdy_interface.h index 64562cc..9ef72c6 100644 --- a/net/tools/flip_server/spdy_interface.h +++ b/net/tools/flip_server/spdy_interface.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// 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. @@ -10,7 +10,7 @@ #include <vector> #include "base/compiler_specific.h" -#include "net/spdy/spdy_framer.h" +#include "net/spdy/buffered_spdy_framer.h" #include "net/spdy/spdy_protocol.h" #include "net/tools/flip_server/balsa_headers.h" #include "net/tools/flip_server/balsa_visitor_interface.h" @@ -23,7 +23,7 @@ namespace net { class FlipAcceptor; class MemoryCache; -class SpdySM : public spdy::SpdyFramerVisitorInterface, +class SpdySM : public spdy::BufferedSpdyFramerVisitorInterface, public SMInterface { public: SpdySM(SMConnection* connection, @@ -60,7 +60,7 @@ class SpdySM : public spdy::SpdyFramerVisitorInterface, std::string& http_data, bool* is_https_scheme); - // SpdyFramerVisitor interface. + // BufferedSpdyFramerVisitorInterface: virtual void OnControl(const spdy::SpdyControlFrame* frame) OVERRIDE; virtual bool OnControlFrameHeaderData( const spdy::SpdyControlFrame* control_frame, @@ -71,6 +71,14 @@ class SpdySM : public spdy::SpdyFramerVisitorInterface, const char* data, size_t len) OVERRIDE; virtual bool OnCredentialFrameData(const char* frame_data, size_t len) OVERRIDE; + virtual void OnSyn(const spdy::SpdySynStreamControlFrame& frame, + const linked_ptr<spdy::SpdyHeaderBlock>& headers) OVERRIDE; + virtual void OnSynReply( + const spdy::SpdySynReplyControlFrame& frame, + const linked_ptr<spdy::SpdyHeaderBlock>& headers) OVERRIDE; + virtual void OnHeaders( + const spdy::SpdyHeadersControlFrame& frame, + const linked_ptr<spdy::SpdyHeaderBlock>& headers) OVERRIDE; public: virtual size_t ProcessReadInput(const char* data, size_t len) OVERRIDE; @@ -103,7 +111,9 @@ class SpdySM : public spdy::SpdyFramerVisitorInterface, const BalsaHeaders& headers) OVERRIDE; virtual void SendDataFrame(uint32 stream_id, const char* data, int64 len, uint32 flags, bool compress) OVERRIDE; - spdy::SpdyFramer* spdy_framer() { return spdy_framer_; } + spdy::BufferedSpdyFramer* spdy_framer() { + return buffered_spdy_framer_; + } static std::string forward_ip_header() { return forward_ip_header_; } static void set_forward_ip_header(std::string value) { @@ -124,7 +134,7 @@ class SpdySM : public spdy::SpdyFramerVisitorInterface, virtual void GetOutput() OVERRIDE; private: uint64 seq_num_; - spdy::SpdyFramer* spdy_framer_; + spdy::BufferedSpdyFramer* buffered_spdy_framer_; bool valid_spdy_session_; // True if we have seen valid data on this session. // Use this to fail fast when junk is sent to our // port. |