| Index: net/spdy/buffered_spdy_framer.h
|
| diff --git a/net/spdy/buffered_spdy_framer.h b/net/spdy/buffered_spdy_framer.h
|
| deleted file mode 100644
|
| index b8428ce32a59d4e5a237958f2bb0a19c30acb01b..0000000000000000000000000000000000000000
|
| --- a/net/spdy/buffered_spdy_framer.h
|
| +++ /dev/null
|
| @@ -1,285 +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.
|
| -
|
| -#ifndef NET_SPDY_BUFFERED_SPDY_FRAMER_H_
|
| -#define NET_SPDY_BUFFERED_SPDY_FRAMER_H_
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "net/base/net_export.h"
|
| -#include "net/socket/next_proto.h"
|
| -#include "net/spdy/spdy_framer.h"
|
| -#include "net/spdy/spdy_header_block.h"
|
| -#include "net/spdy/spdy_protocol.h"
|
| -
|
| -namespace net {
|
| -
|
| -// Returns the SPDY major version corresponding to the given NextProto
|
| -// value, which must represent a SPDY-like protocol.
|
| -NET_EXPORT_PRIVATE SpdyMajorVersion NextProtoToSpdyMajorVersion(
|
| - NextProto next_proto);
|
| -
|
| -class NET_EXPORT_PRIVATE BufferedSpdyFramerVisitorInterface {
|
| - public:
|
| - BufferedSpdyFramerVisitorInterface() {}
|
| -
|
| - // Called if an error is detected in the SpdyFrame protocol.
|
| - virtual void OnError(SpdyFramer::SpdyError error_code) = 0;
|
| -
|
| - // Called if an error is detected in a SPDY stream.
|
| - virtual void OnStreamError(SpdyStreamId stream_id,
|
| - const std::string& description) = 0;
|
| -
|
| - // Called after all the header data for SYN_STREAM control frame is received.
|
| - virtual void OnSynStream(SpdyStreamId stream_id,
|
| - SpdyStreamId associated_stream_id,
|
| - SpdyPriority priority,
|
| - bool fin,
|
| - bool unidirectional,
|
| - const SpdyHeaderBlock& headers) = 0;
|
| -
|
| - // Called after all the header data for SYN_REPLY control frame is received.
|
| - virtual void OnSynReply(SpdyStreamId stream_id,
|
| - bool fin,
|
| - const SpdyHeaderBlock& headers) = 0;
|
| -
|
| - // Called after all the header data for HEADERS control frame is received.
|
| - virtual void OnHeaders(SpdyStreamId stream_id,
|
| - bool has_priority,
|
| - SpdyPriority priority,
|
| - bool fin,
|
| - const SpdyHeaderBlock& headers) = 0;
|
| -
|
| - // Called when a data frame header is received.
|
| - virtual void OnDataFrameHeader(SpdyStreamId stream_id,
|
| - size_t length,
|
| - bool fin) = 0;
|
| -
|
| - // Called when data is received.
|
| - // |stream_id| The stream receiving data.
|
| - // |data| A buffer containing the data received.
|
| - // |len| The length of the data buffer (at most 2^24 - 1 for SPDY/3,
|
| - // but 2^16 - 1 - 8 for SPDY/4).
|
| - // When the other side has finished sending data on this stream,
|
| - // this method will be called with a zero-length buffer.
|
| - virtual void OnStreamFrameData(SpdyStreamId stream_id,
|
| - const char* data,
|
| - size_t len,
|
| - bool fin) = 0;
|
| -
|
| - // Called when a SETTINGS frame is received.
|
| - // |clear_persisted| True if the respective flag is set on the SETTINGS frame.
|
| - virtual void OnSettings(bool clear_persisted) = 0;
|
| -
|
| - // Called when an individual setting within a SETTINGS frame has been parsed
|
| - // and validated.
|
| - virtual void OnSetting(SpdySettingsIds id, uint8 flags, uint32 value) = 0;
|
| -
|
| - // Called when a SETTINGS frame is received with the ACK flag set.
|
| - virtual void OnSettingsAck() {}
|
| -
|
| - // Called at the completion of parsing SETTINGS id and value tuples.
|
| - virtual void OnSettingsEnd() {}
|
| -
|
| - // Called when a PING frame has been parsed.
|
| - virtual void OnPing(SpdyPingId unique_id, bool is_ack) = 0;
|
| -
|
| - // Called when a RST_STREAM frame has been parsed.
|
| - virtual void OnRstStream(SpdyStreamId stream_id,
|
| - SpdyRstStreamStatus status) = 0;
|
| -
|
| - // Called when a GOAWAY frame has been parsed.
|
| - virtual void OnGoAway(SpdyStreamId last_accepted_stream_id,
|
| - SpdyGoAwayStatus status) = 0;
|
| -
|
| - // Called when a WINDOW_UPDATE frame has been parsed.
|
| - virtual void OnWindowUpdate(SpdyStreamId stream_id,
|
| - uint32 delta_window_size) = 0;
|
| -
|
| - // Called when a PUSH_PROMISE frame has been parsed.
|
| - virtual void OnPushPromise(SpdyStreamId stream_id,
|
| - SpdyStreamId promised_stream_id,
|
| - const SpdyHeaderBlock& headers) = 0;
|
| -
|
| - // Called when a frame type we don't recognize is received.
|
| - // Return true if this appears to be a valid extension frame, false otherwise.
|
| - // We distinguish between extension frames and nonsense by checking
|
| - // whether the stream id is valid.
|
| - virtual bool OnUnknownFrame(SpdyStreamId stream_id, int frame_type) = 0;
|
| -
|
| - protected:
|
| - virtual ~BufferedSpdyFramerVisitorInterface() {}
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(BufferedSpdyFramerVisitorInterface);
|
| -};
|
| -
|
| -class NET_EXPORT_PRIVATE BufferedSpdyFramer
|
| - : public SpdyFramerVisitorInterface {
|
| - public:
|
| - BufferedSpdyFramer(SpdyMajorVersion version,
|
| - bool enable_compression);
|
| - ~BufferedSpdyFramer() override;
|
| -
|
| - // Sets callbacks to be called from the buffered spdy framer. A visitor must
|
| - // be set, or else the framer will likely crash. It is acceptable for the
|
| - // visitor to do nothing. If this is called multiple times, only the last
|
| - // visitor will be used.
|
| - void set_visitor(BufferedSpdyFramerVisitorInterface* visitor);
|
| -
|
| - // Set debug callbacks to be called from the framer. The debug visitor is
|
| - // completely optional and need not be set in order for normal operation.
|
| - // If this is called multiple times, only the last visitor will be used.
|
| - void set_debug_visitor(SpdyFramerDebugVisitorInterface* debug_visitor);
|
| -
|
| - // SpdyFramerVisitorInterface
|
| - void OnError(SpdyFramer* spdy_framer) override;
|
| - void OnSynStream(SpdyStreamId stream_id,
|
| - SpdyStreamId associated_stream_id,
|
| - SpdyPriority priority,
|
| - bool fin,
|
| - bool unidirectional) override;
|
| - void OnSynReply(SpdyStreamId stream_id, bool fin) override;
|
| - void OnHeaders(SpdyStreamId stream_id,
|
| - bool has_priority,
|
| - SpdyPriority priority,
|
| - bool fin,
|
| - bool end) override;
|
| - bool OnControlFrameHeaderData(SpdyStreamId stream_id,
|
| - const char* header_data,
|
| - size_t len) override;
|
| - void OnStreamFrameData(SpdyStreamId stream_id,
|
| - const char* data,
|
| - size_t len,
|
| - bool fin) override;
|
| - void OnSettings(bool clear_persisted) override;
|
| - void OnSetting(SpdySettingsIds id, uint8 flags, uint32 value) override;
|
| - void OnSettingsAck() override;
|
| - void OnSettingsEnd() override;
|
| - void OnPing(SpdyPingId unique_id, bool is_ack) override;
|
| - void OnRstStream(SpdyStreamId stream_id, SpdyRstStreamStatus status) override;
|
| - void OnGoAway(SpdyStreamId last_accepted_stream_id,
|
| - SpdyGoAwayStatus status) override;
|
| - void OnWindowUpdate(SpdyStreamId stream_id,
|
| - uint32 delta_window_size) override;
|
| - void OnPushPromise(SpdyStreamId stream_id,
|
| - SpdyStreamId promised_stream_id,
|
| - bool end) override;
|
| - void OnDataFrameHeader(SpdyStreamId stream_id,
|
| - size_t length,
|
| - bool fin) override;
|
| - void OnContinuation(SpdyStreamId stream_id, bool end) override;
|
| - bool OnUnknownFrame(SpdyStreamId stream_id, int frame_type) override;
|
| -
|
| - // SpdyFramer methods.
|
| - size_t ProcessInput(const char* data, size_t len);
|
| - SpdyMajorVersion protocol_version();
|
| - void Reset();
|
| - SpdyFramer::SpdyError error_code() const;
|
| - SpdyFramer::SpdyState state() const;
|
| - bool MessageFullyRead();
|
| - bool HasError();
|
| - SpdyFrame* CreateSynStream(SpdyStreamId stream_id,
|
| - SpdyStreamId associated_stream_id,
|
| - SpdyPriority priority,
|
| - SpdyControlFlags flags,
|
| - const SpdyHeaderBlock* headers);
|
| - SpdyFrame* CreateSynReply(SpdyStreamId stream_id,
|
| - SpdyControlFlags flags,
|
| - const SpdyHeaderBlock* headers);
|
| - SpdyFrame* CreateRstStream(SpdyStreamId stream_id,
|
| - SpdyRstStreamStatus status) const;
|
| - SpdyFrame* CreateSettings(const SettingsMap& values) const;
|
| - SpdyFrame* CreatePingFrame(SpdyPingId unique_id, bool is_ack) const;
|
| - SpdyFrame* CreateGoAway(
|
| - SpdyStreamId last_accepted_stream_id,
|
| - SpdyGoAwayStatus status) const;
|
| - SpdyFrame* CreateHeaders(SpdyStreamId stream_id,
|
| - SpdyControlFlags flags,
|
| - SpdyPriority priority,
|
| - const SpdyHeaderBlock* headers);
|
| - SpdyFrame* CreateWindowUpdate(
|
| - SpdyStreamId stream_id,
|
| - uint32 delta_window_size) const;
|
| - SpdyFrame* CreateDataFrame(SpdyStreamId stream_id,
|
| - const char* data,
|
| - uint32 len,
|
| - SpdyDataFlags flags);
|
| - SpdyFrame* CreatePushPromise(SpdyStreamId stream_id,
|
| - SpdyStreamId promised_stream_id,
|
| - const SpdyHeaderBlock* headers);
|
| -
|
| - // Serialize a frame of unknown type.
|
| - SpdySerializedFrame* SerializeFrame(const SpdyFrameIR& frame) {
|
| - return spdy_framer_.SerializeFrame(frame);
|
| - }
|
| -
|
| - SpdyPriority GetHighestPriority() const;
|
| -
|
| - size_t GetDataFrameMinimumSize() const {
|
| - return spdy_framer_.GetDataFrameMinimumSize();
|
| - }
|
| -
|
| - size_t GetControlFrameHeaderSize() const {
|
| - return spdy_framer_.GetControlFrameHeaderSize();
|
| - }
|
| -
|
| - size_t GetSynStreamMinimumSize() const {
|
| - return spdy_framer_.GetSynStreamMinimumSize();
|
| - }
|
| -
|
| - size_t GetFrameMinimumSize() const {
|
| - return spdy_framer_.GetFrameMinimumSize();
|
| - }
|
| -
|
| - size_t GetFrameMaximumSize() const {
|
| - return spdy_framer_.GetFrameMaximumSize();
|
| - }
|
| -
|
| - size_t GetDataFrameMaximumPayload() const {
|
| - return spdy_framer_.GetDataFrameMaximumPayload();
|
| - }
|
| -
|
| - int frames_received() const { return frames_received_; }
|
| -
|
| - private:
|
| - // The size of the header_buffer_.
|
| - enum { kHeaderBufferSize = 32 * 1024 };
|
| -
|
| - void InitHeaderStreaming(SpdyStreamId stream_id);
|
| -
|
| - SpdyFramer spdy_framer_;
|
| - BufferedSpdyFramerVisitorInterface* visitor_;
|
| -
|
| - // Header block streaming state:
|
| - char header_buffer_[kHeaderBufferSize];
|
| - size_t header_buffer_used_;
|
| - bool header_buffer_valid_;
|
| - SpdyStreamId header_stream_id_;
|
| - int frames_received_;
|
| -
|
| - // Collection of fields from control frames that we need to
|
| - // buffer up from the spdy framer.
|
| - struct ControlFrameFields {
|
| - SpdyFrameType type;
|
| - SpdyStreamId stream_id;
|
| - SpdyStreamId associated_stream_id;
|
| - SpdyStreamId promised_stream_id;
|
| - bool has_priority;
|
| - SpdyPriority priority;
|
| - uint8 credential_slot;
|
| - bool fin;
|
| - bool unidirectional;
|
| - };
|
| - scoped_ptr<ControlFrameFields> control_frame_fields_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(BufferedSpdyFramer);
|
| -};
|
| -
|
| -} // namespace net
|
| -
|
| -#endif // NET_SPDY_BUFFERED_SPDY_FRAMER_H_
|
|
|