1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "quiche/quic/test_tools/quic_stream_send_buffer_peer.h" 6 7 #include "quiche/quic/test_tools/quic_interval_deque_peer.h" 8 9 namespace quic { 10 11 namespace test { 12 13 // static SetStreamOffset(QuicStreamSendBuffer * send_buffer,QuicStreamOffset stream_offset)14void QuicStreamSendBufferPeer::SetStreamOffset( 15 QuicStreamSendBuffer* send_buffer, QuicStreamOffset stream_offset) { 16 send_buffer->stream_offset_ = stream_offset; 17 } 18 19 // static CurrentWriteSlice(QuicStreamSendBuffer * send_buffer)20const BufferedSlice* QuicStreamSendBufferPeer::CurrentWriteSlice( 21 QuicStreamSendBuffer* send_buffer) { 22 auto wi = write_index(send_buffer); 23 24 if (wi == -1) { 25 return nullptr; 26 } 27 return QuicIntervalDequePeer::GetItem(&send_buffer->interval_deque_, wi); 28 } 29 EndOffset(QuicStreamSendBuffer * send_buffer)30QuicStreamOffset QuicStreamSendBufferPeer::EndOffset( 31 QuicStreamSendBuffer* send_buffer) { 32 return send_buffer->current_end_offset_; 33 } 34 35 // static TotalLength(QuicStreamSendBuffer * send_buffer)36QuicByteCount QuicStreamSendBufferPeer::TotalLength( 37 QuicStreamSendBuffer* send_buffer) { 38 QuicByteCount length = 0; 39 for (auto slice = send_buffer->interval_deque_.DataBegin(); 40 slice != send_buffer->interval_deque_.DataEnd(); ++slice) { 41 length += slice->slice.length(); 42 } 43 return length; 44 } 45 46 // static write_index(QuicStreamSendBuffer * send_buffer)47int32_t QuicStreamSendBufferPeer::write_index( 48 QuicStreamSendBuffer* send_buffer) { 49 return QuicIntervalDequePeer::GetCachedIndex(&send_buffer->interval_deque_); 50 } 51 52 } // namespace test 53 54 } // namespace quic 55