diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-25 08:37:30 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-25 08:37:30 +0000 |
commit | 3f2aac72c5766e101a619d66aee526b8251653b6 (patch) | |
tree | f465923c36c678d30c66800e4db90be55fc28d4f /net/spdy/spdy_session.h | |
parent | 01d65174be5027747da08803ff1acc865b76ec03 (diff) | |
download | chromium_src-3f2aac72c5766e101a619d66aee526b8251653b6.zip chromium_src-3f2aac72c5766e101a619d66aee526b8251653b6.tar.gz chromium_src-3f2aac72c5766e101a619d66aee526b8251653b6.tar.bz2 |
Changes to read SPDY headers incrementally.
Added buffered_spdy_framer class to support buffering of spdy control
header frames. It calls SpdySession's OnSyn, OnSynReply and OnHeaders
methods after receiving all the control frame header data.
spdy_framer*.* - integrated changes from the server.
Changed OnControlFrameHeaderData to send control frame
instead of stream_id.
Merged changes from the following issue into this issue.
http://codereview.chromium.org/8953012/
R=willchan
TEST=network unit tests
Review URL: http://codereview.chromium.org/8980015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@115769 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy/spdy_session.h')
-rw-r--r-- | net/spdy/spdy_session.h | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h index 1cdb7f7..fcdb193 100644 --- a/net/spdy/spdy_session.h +++ b/net/spdy/spdy_session.h @@ -26,7 +26,7 @@ #include "net/socket/client_socket_handle.h" #include "net/socket/ssl_client_socket.h" #include "net/socket/stream_socket.h" -#include "net/spdy/spdy_framer.h" +#include "net/spdy/buffered_spdy_framer.h" #include "net/spdy/spdy_io_buffer.h" #include "net/spdy/spdy_protocol.h" #include "net/spdy/spdy_session_pool.h" @@ -46,7 +46,7 @@ class SpdyStream; class SSLInfo; class NET_EXPORT SpdySession : public base::RefCounted<SpdySession>, - public spdy::SpdyFramerVisitorInterface, + public spdy::BufferedSpdyFramerVisitorInterface, public LayeredPool { public: // Create a new SpdySession. @@ -304,12 +304,6 @@ class NET_EXPORT SpdySession : public base::RefCounted<SpdySession>, const BoundNetLog& stream_net_log); // Control frame handlers. - void OnSyn(const spdy::SpdySynStreamControlFrame& frame, - const linked_ptr<spdy::SpdyHeaderBlock>& headers); - void OnSynReply(const spdy::SpdySynReplyControlFrame& frame, - const linked_ptr<spdy::SpdyHeaderBlock>& headers); - void OnHeaders(const spdy::SpdyHeadersControlFrame& frame, - const linked_ptr<spdy::SpdyHeaderBlock>& headers); void OnRst(const spdy::SpdyRstStreamControlFrame& frame); void OnGoAway(const spdy::SpdyGoAwayControlFrame& frame); void OnPing(const spdy::SpdyPingControlFrame& frame); @@ -398,19 +392,29 @@ class NET_EXPORT SpdySession : public base::RefCounted<SpdySession>, // can be deferred to the MessageLoop, so we avoid re-entrancy problems. void InvokeUserStreamCreationCallback(scoped_refptr<SpdyStream>* stream); - // SpdyFramerVisitorInterface: + // BufferedSpdyFramerVisitorInterface: virtual void OnError(spdy::SpdyFramer*) OVERRIDE; virtual void OnStreamFrameData(spdy::SpdyStreamId stream_id, const char* data, size_t len) OVERRIDE; virtual void OnControl(const spdy::SpdyControlFrame* frame) OVERRIDE; - virtual bool OnControlFrameHeaderData(spdy::SpdyStreamId stream_id, - const char* header_data, - size_t len) OVERRIDE; + virtual bool OnControlFrameHeaderData( + const spdy::SpdyControlFrame* control_frame, + const char* header_data, + size_t len) OVERRIDE; virtual void OnDataFrameHeader(const spdy::SpdyDataFrame* frame) 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; + // -------------------------- // Helper methods for testing // -------------------------- @@ -507,7 +511,7 @@ class NET_EXPORT SpdySession : public base::RefCounted<SpdySession>, int certificate_error_code_; // Spdy Frame state. - spdy::SpdyFramer spdy_framer_; + spdy::BufferedSpdyFramer buffered_spdy_framer_; // If an error has occurred on the session, the session is effectively // dead. Record this error here. When no error has occurred, |error_| will |