summaryrefslogtreecommitdiffstats
path: root/net/tools
diff options
context:
space:
mode:
authorrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-18 20:46:11 +0000
committerrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-18 20:46:11 +0000
commitd7a9cbaf97466fd49d02981bece643be099c9803 (patch)
treeb03016540d5f0b4cc3aec464ef17451b448f870a /net/tools
parent8184aff265aa5e81156262d5f0125c481dde7b4a (diff)
downloadchromium_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.cc60
-rw-r--r--net/tools/flip_server/spdy_interface.h22
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.