Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Unified Diff: net/quic/quic_frame_list.h

Issue 1414573004: Introduces QuicStreamSequencerBufferInterface with one implementation. Refactor, no behavior change. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing the build file (previously missing a comma) Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/quic/quic_frame_list.h
diff --git a/net/quic/quic_frame_list.h b/net/quic/quic_frame_list.h
index 7738686b694e38373e2250207fb63708598613ee..9aad82e388298872ef76af3b6c5b7c2926f47912 100644
--- a/net/quic/quic_frame_list.h
+++ b/net/quic/quic_frame_list.h
@@ -5,8 +5,8 @@
#ifndef NET_QUIC_QUIC_FRAME_LIST_H_
#define NET_QUIC_QUIC_FRAME_LIST_H_
-#include "net/quic/quic_frame_list.h"
#include "net/quic/quic_protocol.h"
+#include "net/quic/quic_stream_sequencer_buffer_interface.h"
using base::StringPiece;
using std::string;
@@ -18,7 +18,8 @@ namespace test {
class QuicStreamSequencerPeer;
}
-class NET_EXPORT_PRIVATE QuicFrameList {
+class NET_EXPORT_PRIVATE QuicFrameList
+ : public QuicStreamSequencerBufferInterface {
public:
// A contiguous segment received by a QUIC stream.
struct FrameData {
@@ -33,62 +34,23 @@ class NET_EXPORT_PRIVATE QuicFrameList {
explicit QuicFrameList();
- ~QuicFrameList();
-
- // Clear the buffer such that it is in its initial, newly constructed state.
- void Clear() { frame_list_.clear(); }
-
- // Returns true if there is nothing to read in this buffer.
- bool Empty() const { return frame_list_.empty(); }
-
- // Write the supplied data to this buffer. |timestamp| is used for
- // measuring head of line (HOL) blocking. If the write was
- // successful, return the number of bytes written in
- // |bytes_written|. Return QUIC_INVALID_STREAM_DATA if |data|
- // overlaps with existing data. No data will be written. Return
- // QUIC_NO_ERROR, if |data| is duplicated with data written
- // previously, and |bytes_written| = 0
- QuicErrorCode WriteAtOffset(QuicStreamOffset offset,
- StringPiece data,
- QuicTime timestamp,
- size_t* bytes_written);
-
- // Read from this buffer into given iovec array, upto number of iov_len iovec
- // objects.
- // Returns the number of bytes read into iov.
- size_t ReadvAndInvalidate(const struct iovec* iov, size_t iov_len);
-
- // Invalidate all currently readable bytes.
- // Returns the number of bytes invalidated.
- size_t FlushBufferedFrames();
-
- // Returns the readable region of valid data in iovec format. The readable
- // region is the buffer region where there is valid data not yet read by
- // client. ReadAndInvalidate() and WriteAtOffset() change the readable region.
- // The return value of this function is the number of iovec entries
- // filled into in iov. If the region is empty, one iovec entry with 0 length
- // is returned, and the function returns 0. If there are more readable
- // regions than iov_size, the function only processes the first
- // iov_size of them.
- int GetReadableRegions(struct iovec* iov, int iov_len) const;
-
- // Fills in one iovec with the next readable region. |timestamp| is
- // data arrived at the sequencer, and is used for measuring head of
- // line blocking (HOL). Returns false if there is no readable
- // region available.
- bool GetReadableRegion(iovec* iov, QuicTime* timestamp) const;
-
- // Called after GetReadableRegions() to accumulate total_bytes_read_ and free
- // up block when all data in it have been read out.
- // Pre-requisite: bytes_used <= ReadableBytes()
- bool IncreaseTotalReadAndInvalidate(size_t bytes_used);
-
- // Whether there are bytes can be read out (offset == total_bytes_read_)
- bool HasBytesToRead() const;
-
- size_t size() const { return frame_list_.size(); }
-
- QuicStreamOffset total_bytes_read() const { return total_bytes_read_; }
+ ~QuicFrameList() override;
+
+ // QuicStreamSequencerBufferInterface implementation
+ void Clear() override;
+ bool Empty() const override;
+ QuicErrorCode OnStreamData(QuicStreamOffset offset,
+ StringPiece data,
+ QuicTime timestamp,
+ size_t* bytes_buffered) override;
+ size_t Readv(const struct iovec* iov, size_t iov_len) override;
+ int GetReadableRegions(struct iovec* iov, int iov_len) const override;
+ bool GetReadableRegion(iovec* iov, QuicTime* timestamp) const override;
+ bool MarkConsumed(size_t bytes_used) override;
+ size_t FlushBufferedFrames() override;
+ bool HasBytesToRead() const override;
+ QuicStreamOffset BytesConsumed() const override;
+ size_t BytesBuffered() const override;
private:
friend class test::QuicStreamSequencerPeer;
@@ -106,9 +68,13 @@ class NET_EXPORT_PRIVATE QuicFrameList {
list<FrameData>::const_iterator insertion_point) const;
list<FrameData> frame_list_;
+
+ // Number of bytes in buffer.
+ size_t num_bytes_buffered_ = 0;
+
QuicStreamOffset total_bytes_read_ = 0;
};
-} // namespace net_quic
+} // namespace net
#endif // NET_QUIC_QUIC_FRAME_LIST_H_
« no previous file with comments | « net/net.gypi ('k') | net/quic/quic_frame_list.cc » ('j') | net/quic/quic_stream_sequencer.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698