Index: net/quic/quic_stream_sequencer.cc |
diff --git a/net/quic/quic_stream_sequencer.cc b/net/quic/quic_stream_sequencer.cc |
index 3989c4f98b8686f87062c49e946c602cb6b02efc..e916b2147dcaaf446163a51442e8a5513a1c2c13 100644 |
--- a/net/quic/quic_stream_sequencer.cc |
+++ b/net/quic/quic_stream_sequencer.cc |
@@ -9,8 +9,10 @@ |
#include <utility> |
#include "base/logging.h" |
+#include "net/quic/quic_clock.h" |
#include "net/quic/quic_frame_list.h" |
#include "net/quic/reliable_quic_stream.h" |
+#include "net/quic/reliable_quic_stream.h" |
using std::min; |
using std::numeric_limits; |
@@ -18,7 +20,8 @@ using std::string; |
namespace net { |
-QuicStreamSequencer::QuicStreamSequencer(ReliableQuicStream* quic_stream) |
+QuicStreamSequencer::QuicStreamSequencer(ReliableQuicStream* quic_stream, |
+ const QuicClock* clock) |
: stream_(quic_stream), |
num_bytes_consumed_(0), |
close_offset_(numeric_limits<QuicStreamOffset>::max()), |
@@ -26,7 +29,8 @@ QuicStreamSequencer::QuicStreamSequencer(ReliableQuicStream* quic_stream) |
num_bytes_buffered_(0), |
num_frames_received_(0), |
num_duplicate_frames_received_(0), |
- num_early_frames_received_(0) {} |
+ num_early_frames_received_(0), |
+ clock_(clock) {} |
QuicStreamSequencer::~QuicStreamSequencer() {} |
@@ -48,8 +52,8 @@ void QuicStreamSequencer::OnStreamFrame(const QuicStreamFrame& frame) { |
} |
} |
size_t bytes_written; |
- QuicErrorCode result = |
- buffered_frames_.WriteAtOffset(byte_offset, frame.data, &bytes_written); |
+ QuicErrorCode result = buffered_frames_.WriteAtOffset( |
+ byte_offset, frame.data, clock_->ApproximateNow(), &bytes_written); |
if (result == QUIC_INVALID_STREAM_DATA) { |
stream_->CloseConnectionWithDetails( |
@@ -111,6 +115,12 @@ int QuicStreamSequencer::GetReadableRegions(iovec* iov, size_t iov_len) const { |
return buffered_frames_.GetReadableRegions(iov, iov_len); |
} |
+bool QuicStreamSequencer::GetReadableRegion(iovec* iov, |
+ QuicTime* timestamp) const { |
+ DCHECK(!blocked_); |
+ return buffered_frames_.GetReadableRegion(iov, timestamp); |
+} |
+ |
int QuicStreamSequencer::Readv(const struct iovec* iov, size_t iov_len) { |
DCHECK(!blocked_); |
size_t bytes_read = buffered_frames_.ReadvAndInvalidate(iov, iov_len); |