| Index: net/quic/core/quic_stream_sequencer_buffer.h
|
| diff --git a/net/quic/core/quic_stream_sequencer_buffer.h b/net/quic/core/quic_stream_sequencer_buffer.h
|
| index e381ec4e32d4a157b3ddc7fc01d7b4ba975f1fc3..135e7d15eaebe142dc1f6916bf14e3ec9bcafcf0 100644
|
| --- a/net/quic/core/quic_stream_sequencer_buffer.h
|
| +++ b/net/quic/core/quic_stream_sequencer_buffer.h
|
| @@ -152,6 +152,9 @@ class NET_EXPORT_PRIVATE QuicStreamSequencerBuffer {
|
| // (To be called only after sequencer's StopReading has been called.)
|
| size_t FlushBufferedFrames();
|
|
|
| + // Free the memory of buffered data.
|
| + void ReleaseWholeBuffer();
|
| +
|
| // Whether there are bytes can be read out.
|
| bool HasBytesToRead() const;
|
|
|
| @@ -161,6 +164,10 @@ class NET_EXPORT_PRIVATE QuicStreamSequencerBuffer {
|
| // Count how many bytes are in buffer at this moment.
|
| size_t BytesBuffered() const;
|
|
|
| + bool reduce_sequencer_buffer_memory_life_time() const {
|
| + return reduce_sequencer_buffer_memory_life_time_;
|
| + }
|
| +
|
| private:
|
| friend class test::QuicStreamSequencerBufferPeer;
|
|
|
| @@ -228,10 +235,14 @@ class NET_EXPORT_PRIVATE QuicStreamSequencerBuffer {
|
| // Contains Gaps which represents currently missing data.
|
| std::list<Gap> gaps_;
|
|
|
| + // If true, allocate buffer memory upon the first frame arrival and release
|
| + // the memory when stream is read closed.
|
| + bool reduce_sequencer_buffer_memory_life_time_;
|
| +
|
| // An ordered, variable-length list of blocks, with the length limited
|
| // such that the number of blocks never exceeds blocks_count_.
|
| // Each list entry can hold up to kBlockSizeBytes bytes.
|
| - std::vector<BufferBlock*> blocks_;
|
| + std::unique_ptr<BufferBlock* []> blocks_;
|
|
|
| // Number of bytes in buffer.
|
| size_t num_bytes_buffered_;
|
|
|