1// Copyright 2013 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#ifndef NET_QUIC_TEST_TOOLS_QUIC_SENT_PACKET_MANAGER_PEER_H_
6#define NET_QUIC_TEST_TOOLS_QUIC_SENT_PACKET_MANAGER_PEER_H_
7
8#include "net/quic/quic_protocol.h"
9#include "net/quic/quic_sent_packet_manager.h"
10
11namespace net {
12
13class SendAlgorithmInterface;
14
15namespace test {
16
17class QuicSentPacketManagerPeer {
18 public:
19  static void SetMaxTailLossProbes(
20      QuicSentPacketManager* sent_packet_manager, size_t max_tail_loss_probes);
21
22  static void SetSendAlgorithm(QuicSentPacketManager* sent_packet_manager,
23                               SendAlgorithmInterface* send_algorithm);
24
25  static const LossDetectionInterface* GetLossAlgorithm(
26      QuicSentPacketManager* sent_packet_manager);
27
28  static const SendAlgorithmInterface* GetCongestionControlAlgorithm(
29      const QuicSentPacketManager& sent_packet_manager);
30
31  static void SetLossAlgorithm(QuicSentPacketManager* sent_packet_manager,
32                               LossDetectionInterface* loss_detector);
33
34  static RttStats* GetRttStats(QuicSentPacketManager* sent_packet_manager);
35
36  static size_t GetNackCount(
37      const QuicSentPacketManager* sent_packet_manager,
38      QuicPacketSequenceNumber sequence_number);
39
40  static size_t GetPendingRetransmissionCount(
41      const QuicSentPacketManager* sent_packet_manager);
42
43  static bool HasPendingPackets(
44      const QuicSentPacketManager* sent_packet_manager);
45
46  static QuicTime GetSentTime(const QuicSentPacketManager* sent_packet_manager,
47                              QuicPacketSequenceNumber sequence_number);
48
49  // Returns true if |sequence_number| is a retransmission of a packet.
50  static bool IsRetransmission(QuicSentPacketManager* sent_packet_manager,
51                               QuicPacketSequenceNumber sequence_number);
52
53  static void MarkForRetransmission(QuicSentPacketManager* sent_packet_manager,
54                                    QuicPacketSequenceNumber sequence_number,
55                                    TransmissionType transmission_type);
56
57  static QuicTime::Delta GetRetransmissionDelay(
58      const QuicSentPacketManager* sent_packet_manager);
59
60  static bool HasUnackedCryptoPackets(
61      const QuicSentPacketManager* sent_packet_manager);
62
63  static size_t GetNumRetransmittablePackets(
64      const QuicSentPacketManager* sent_packet_manager);
65
66  static QuicByteCount GetBytesInFlight(
67      const QuicSentPacketManager* sent_packet_manager);
68
69  static QuicSentPacketManager::NetworkChangeVisitor* GetNetworkChangeVisitor(
70      const QuicSentPacketManager* sent_packet_manager);
71
72  static QuicSustainedBandwidthRecorder& GetBandwidthRecorder(
73      QuicSentPacketManager* sent_packet_manager);
74
75 private:
76  DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManagerPeer);
77};
78
79}  // namespace test
80
81}  // namespace net
82
83#endif  // NET_QUIC_TEST_TOOLS_QUIC_SENT_PACKET_MANAGER_PEER_H_
84