| Index: net/quic/core/quic_headers_stream.h
|
| diff --git a/net/quic/core/quic_headers_stream.h b/net/quic/core/quic_headers_stream.h
|
| index b28a7a45a7c368c84b2cea31c00cd09f5e9340e6..f74b869693cdeba24dd03905d4d44ba9c3b62b87 100644
|
| --- a/net/quic/core/quic_headers_stream.h
|
| +++ b/net/quic/core/quic_headers_stream.h
|
| @@ -6,6 +6,7 @@
|
| #define NET_QUIC_CORE_QUIC_HEADERS_STREAM_H_
|
|
|
| #include <cstddef>
|
| +#include <deque>
|
| #include <memory>
|
|
|
| #include "base/macros.h"
|
| @@ -37,14 +38,53 @@ class QUIC_EXPORT_PRIVATE QuicHeadersStream : public QuicStream {
|
| // Release underlying buffer if allowed.
|
| void MaybeReleaseSequencerBuffer();
|
|
|
| + void OnStreamFrameAcked(const QuicStreamFrame& frame,
|
| + QuicTime::Delta ack_delay_time) override;
|
| +
|
| + void OnStreamFrameRetransmitted(const QuicStreamFrame& frame) override;
|
| +
|
| private:
|
| friend class test::QuicHeadersStreamPeer;
|
|
|
| + // Override to store mapping from offset, length to ack_listener. This
|
| + // ack_listener is notified once data within [offset, offset + length] is
|
| + // acked or retransmitted.
|
| + QuicConsumedData WritevDataInner(
|
| + QuicIOVector iov,
|
| + QuicStreamOffset offset,
|
| + bool fin,
|
| + QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener)
|
| + override;
|
| +
|
| + // CompressedHeaderInfo includes simple information of a header, including
|
| + // offset in headers stream, unacked length and ack listener of this header.
|
| + struct QUIC_EXPORT_PRIVATE CompressedHeaderInfo {
|
| + CompressedHeaderInfo(
|
| + QuicStreamOffset headers_stream_offset,
|
| + QuicStreamOffset full_length,
|
| + QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener);
|
| + CompressedHeaderInfo(const CompressedHeaderInfo& other);
|
| + ~CompressedHeaderInfo();
|
| +
|
| + // Offset the header was sent on the headers stream.
|
| + QuicStreamOffset headers_stream_offset;
|
| + // The full length of the header.
|
| + QuicByteCount full_length;
|
| + // The remaining bytes to be acked.
|
| + QuicByteCount unacked_length;
|
| + // Ack listener of this header, and it is notified once any of the bytes has
|
| + // been acked or retransmitted.
|
| + QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener;
|
| + };
|
| +
|
| // Returns true if the session is still connected.
|
| bool IsConnected();
|
|
|
| QuicSpdySession* spdy_session_;
|
|
|
| + // Headers that have not been fully acked.
|
| + std::deque<CompressedHeaderInfo> unacked_headers_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(QuicHeadersStream);
|
| };
|
|
|
|
|