| Index: net/quic/quic_headers_stream.h
|
| diff --git a/net/quic/quic_headers_stream.h b/net/quic/quic_headers_stream.h
|
| deleted file mode 100644
|
| index e80040e0aa0f27b6eccdb9953e6bf435d07a19a7..0000000000000000000000000000000000000000
|
| --- a/net/quic/quic_headers_stream.h
|
| +++ /dev/null
|
| @@ -1,177 +0,0 @@
|
| -// Copyright 2013 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_QUIC_QUIC_HEADERS_STREAM_H_
|
| -#define NET_QUIC_QUIC_HEADERS_STREAM_H_
|
| -
|
| -#include <stddef.h>
|
| -
|
| -#include <memory>
|
| -
|
| -#include "base/macros.h"
|
| -#include "net/base/net_export.h"
|
| -#include "net/quic/quic_header_list.h"
|
| -#include "net/quic/quic_protocol.h"
|
| -#include "net/quic/reliable_quic_stream.h"
|
| -#include "net/spdy/spdy_framer.h"
|
| -
|
| -namespace net {
|
| -
|
| -class QuicSpdySession;
|
| -
|
| -namespace test {
|
| -class QuicHeadersStreamPeer;
|
| -} // namespace test
|
| -
|
| -// Headers in QUIC are sent as HTTP/2 HEADERS or PUSH_PROMISE frames
|
| -// over a reserved reliable stream with the id 3. Each endpoint
|
| -// (client and server) will allocate an instance of QuicHeadersStream
|
| -// to send and receive headers.
|
| -class NET_EXPORT_PRIVATE QuicHeadersStream : public ReliableQuicStream {
|
| - public:
|
| - class NET_EXPORT_PRIVATE HpackDebugVisitor {
|
| - public:
|
| - HpackDebugVisitor();
|
| -
|
| - virtual ~HpackDebugVisitor();
|
| -
|
| - // For each HPACK indexed representation processed, |elapsed| is
|
| - // the time since the corresponding entry was added to the dynamic
|
| - // table.
|
| - virtual void OnUseEntry(QuicTime::Delta elapsed) = 0;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(HpackDebugVisitor);
|
| - };
|
| -
|
| - explicit QuicHeadersStream(QuicSpdySession* session);
|
| - ~QuicHeadersStream() override;
|
| -
|
| - // Writes |headers| for |stream_id| in an HTTP/2 HEADERS frame to the peer.
|
| - // If |fin| is true, the fin flag will be set on the HEADERS frame. Returns
|
| - // the size, in bytes, of the resulting HEADERS frame.
|
| - virtual size_t WriteHeaders(QuicStreamId stream_id,
|
| - SpdyHeaderBlock headers,
|
| - bool fin,
|
| - SpdyPriority priority,
|
| - QuicAckListenerInterface* ack_listener);
|
| -
|
| - // Write |headers| for |promised_stream_id| on |original_stream_id| in a
|
| - // PUSH_PROMISE frame to peer.
|
| - // Return the size, in bytes, of the resulting PUSH_PROMISE frame.
|
| - virtual size_t WritePushPromise(QuicStreamId original_stream_id,
|
| - QuicStreamId promised_stream_id,
|
| - SpdyHeaderBlock headers,
|
| - QuicAckListenerInterface* ack_listener);
|
| -
|
| - // For forcing HOL blocking. This encapsulates data from other
|
| - // streams into HTTP/2 data frames on the headers stream.
|
| - QuicConsumedData WritevStreamData(
|
| - QuicStreamId id,
|
| - QuicIOVector iov,
|
| - QuicStreamOffset offset,
|
| - bool fin,
|
| - QuicAckListenerInterface* ack_notifier_delegate);
|
| -
|
| - // ReliableQuicStream implementation
|
| - void OnDataAvailable() override;
|
| -
|
| - bool supports_push_promise() { return supports_push_promise_; }
|
| -
|
| - // Experimental: force HPACK to use static table and huffman coding
|
| - // only. Part of exploring improvements related to headers stream
|
| - // induced HOL blocking in QUIC.
|
| - void DisableHpackDynamicTable();
|
| -
|
| - // Optional, enables instrumentation related to go/quic-hpack.
|
| - void SetHpackEncoderDebugVisitor(std::unique_ptr<HpackDebugVisitor> visitor);
|
| - void SetHpackDecoderDebugVisitor(std::unique_ptr<HpackDebugVisitor> visitor);
|
| -
|
| - // Sets the maximum size of the header compression table spdy_framer_ is
|
| - // willing to use to decode header blocks.
|
| - void UpdateHeaderEncoderTableSize(uint32_t value);
|
| -
|
| - // Sets how much encoded data the hpack decoder of spdy_framer_ is willing to
|
| - // buffer.
|
| - void set_max_decode_buffer_size_bytes(size_t max_decode_buffer_size_bytes) {
|
| - spdy_framer_.set_max_decode_buffer_size_bytes(max_decode_buffer_size_bytes);
|
| - }
|
| -
|
| - private:
|
| - friend class test::QuicHeadersStreamPeer;
|
| -
|
| - class SpdyFramerVisitor;
|
| -
|
| - // The following methods are called by the SimpleVisitor.
|
| -
|
| - // Called when a HEADERS frame has been received.
|
| - void OnHeaders(SpdyStreamId stream_id,
|
| - bool has_priority,
|
| - SpdyPriority priority,
|
| - bool fin);
|
| -
|
| - // Called when a PUSH_PROMISE frame has been received.
|
| - void OnPushPromise(SpdyStreamId stream_id,
|
| - SpdyStreamId promised_stream_id,
|
| - bool end);
|
| -
|
| - // Called when a chunk of header data is available. This is called
|
| - // after OnHeaders.
|
| - // |stream_id| The stream receiving the header data.
|
| - // |header_data| A buffer containing the header data chunk received.
|
| - // |len| The length of the header data buffer. A length of zero indicates
|
| - // that the header data block has been completely sent.
|
| - void OnControlFrameHeaderData(SpdyStreamId stream_id,
|
| - const char* header_data,
|
| - size_t len);
|
| -
|
| - // Called when the complete list of headers is available.
|
| - void OnHeaderList(const QuicHeaderList& header_list);
|
| -
|
| - // Called when the size of the compressed frame payload is available.
|
| - void OnCompressedFrameSize(size_t frame_len);
|
| -
|
| - // For force HOL blocking, where stream frames from all streams are
|
| - // plumbed through headers stream as HTTP/2 data frames. Return false
|
| - // if force_hol_blocking_ is false;
|
| - bool OnDataFrameHeader(QuicStreamId stream_id, size_t length, bool fin);
|
| - bool OnStreamFrameData(QuicStreamId stream_id, const char* data, size_t len);
|
| -
|
| - // Returns true if the session is still connected.
|
| - bool IsConnected();
|
| -
|
| - QuicSpdySession* spdy_session_;
|
| -
|
| - // Data about the stream whose headers are being processed.
|
| - QuicStreamId stream_id_;
|
| - QuicStreamId promised_stream_id_;
|
| - bool fin_;
|
| - size_t frame_len_;
|
| - size_t uncompressed_frame_len_;
|
| -
|
| - // Helper variables that cache the corresponding feature flag.
|
| - bool measure_headers_hol_blocking_time_;
|
| - bool supports_push_promise_;
|
| -
|
| - // Timestamps used to measure HOL blocking, these are recorded by
|
| - // the sequencer approximate to the time of arrival off the wire.
|
| - // |cur_max_timestamp_| tracks the most recent arrival time of
|
| - // frames for current (at the headers stream level) processed
|
| - // stream's headers, and |prev_max_timestamp_| tracks the most
|
| - // recent arrival time of lower numbered streams.
|
| - QuicTime cur_max_timestamp_;
|
| - QuicTime prev_max_timestamp_;
|
| -
|
| - SpdyFramer spdy_framer_;
|
| - std::unique_ptr<SpdyFramerVisitor> spdy_framer_visitor_;
|
| -
|
| - // Either empty, or contains the complete list of headers.
|
| - QuicHeaderList header_list_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(QuicHeadersStream);
|
| -};
|
| -
|
| -} // namespace net
|
| -
|
| -#endif // NET_QUIC_QUIC_HEADERS_STREAM_H_
|
|
|