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)14 void QuicStreamSendBufferPeer::SetStreamOffset(
15     QuicStreamSendBuffer* send_buffer, QuicStreamOffset stream_offset) {
16   send_buffer->stream_offset_ = stream_offset;
17 }
18 
19 // static
CurrentWriteSlice(QuicStreamSendBuffer * send_buffer)20 const 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)30 QuicStreamOffset QuicStreamSendBufferPeer::EndOffset(
31     QuicStreamSendBuffer* send_buffer) {
32   return send_buffer->current_end_offset_;
33 }
34 
35 // static
TotalLength(QuicStreamSendBuffer * send_buffer)36 QuicByteCount 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)47 int32_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