blob: faf9aedb2fb3108b7c57a18f00a08a1c10be8ab2 [file] [log] [blame]
[email protected]b1f287d2012-12-22 17:25:391// Copyright (c) 2012 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_CONNECTION_PEER_H_
6#define NET_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_
7
8#include "base/basictypes.h"
[email protected]4e49b6a2013-06-18 16:39:289#include "net/base/ip_endpoint.h"
[email protected]54612dc2013-08-17 00:46:4210#include "net/quic/quic_connection_stats.h"
[email protected]fee17f72013-02-03 07:47:4111#include "net/quic/quic_protocol.h"
[email protected]b1f287d2012-12-22 17:25:3912
13namespace net {
14
15struct QuicAckFrame;
[email protected]899951652013-05-16 12:52:3916struct QuicPacketHeader;
[email protected]965dbe62013-08-09 21:34:3117class QuicAlarm;
[email protected]c67a82cb2013-09-24 02:53:2118class QuicCongestionManager;
[email protected]b1f287d2012-12-22 17:25:3919class QuicConnection;
[email protected]899951652013-05-16 12:52:3920class QuicConnectionHelperInterface;
[email protected]b1f287d2012-12-22 17:25:3921class QuicConnectionVisitorInterface;
[email protected]899951652013-05-16 12:52:3922class QuicFecGroup;
[email protected]2532de12013-05-09 12:29:3323class QuicFramer;
[email protected]c995c572013-01-18 05:43:2024class QuicPacketCreator;
[email protected]cbd731e2013-10-24 00:20:3925class QuicPacketWriter;
[email protected]fee17f72013-02-03 07:47:4126class ReceiveAlgorithmInterface;
27class SendAlgorithmInterface;
[email protected]b1f287d2012-12-22 17:25:3928
29namespace test {
30
[email protected]cbd731e2013-10-24 00:20:3931class QuicTestWriter;
32
[email protected]b1f287d2012-12-22 17:25:3933// Peer to make public a number of otherwise private QuicConnection methods.
34class QuicConnectionPeer {
35 public:
36 static void SendAck(QuicConnection* connection);
37
[email protected]fee17f72013-02-03 07:47:4138 static void SetReceiveAlgorithm(QuicConnection* connection,
39 ReceiveAlgorithmInterface* receive_algorithm);
[email protected]b1f287d2012-12-22 17:25:3940
[email protected]fee17f72013-02-03 07:47:4141 static void SetSendAlgorithm(QuicConnection* connection,
42 SendAlgorithmInterface* send_algorithm);
[email protected]b1f287d2012-12-22 17:25:3943
[email protected]3e60db82013-08-05 19:43:0644 static QuicAckFrame* CreateAckFrame(QuicConnection* connection);
[email protected]b1f287d2012-12-22 17:25:3945
46 static QuicConnectionVisitorInterface* GetVisitor(
47 QuicConnection* connection);
48
[email protected]c995c572013-01-18 05:43:2049 static QuicPacketCreator* GetPacketCreator(QuicConnection* connection);
50
[email protected]c67a82cb2013-09-24 02:53:2151 static QuicCongestionManager* GetCongestionManager(
52 QuicConnection* connection);
[email protected]51951ad2013-01-15 06:47:3253
[email protected]c67a82cb2013-09-24 02:53:2154 static bool GetReceivedTruncatedAck(QuicConnection* connection);
[email protected]fee17f72013-02-03 07:47:4155
[email protected]b064310782013-05-30 21:12:1756 static QuicTime::Delta GetNetworkTimeout(QuicConnection* connection);
[email protected]899951652013-05-16 12:52:3957
[email protected]fee17f72013-02-03 07:47:4158 static bool IsSavedForRetransmission(
59 QuicConnection* connection,
60 QuicPacketSequenceNumber sequence_number);
61
62 static size_t GetRetransmissionCount(
63 QuicConnection* connection,
64 QuicPacketSequenceNumber sequence_number);
65
[email protected]9db443912013-02-25 05:27:0366 static QuicPacketEntropyHash GetSentEntropyHash(
67 QuicConnection* connection,
68 QuicPacketSequenceNumber sequence_number);
69
70 static bool IsValidEntropy(QuicConnection* connection,
71 QuicPacketSequenceNumber largest_observed,
72 const SequenceNumberSet& missing_packets,
73 QuicPacketEntropyHash entropy_hash);
74
75 static QuicPacketEntropyHash ReceivedEntropyHash(
76 QuicConnection* connection,
77 QuicPacketSequenceNumber sequence_number);
78
[email protected]0741d712013-10-08 00:10:1179 static bool IsWriteBlocked(QuicConnection* connection);
80
81 static void SetIsWriteBlocked(QuicConnection* connection, bool write_blocked);
82
[email protected]14e8106c2013-03-14 16:25:3383 static bool IsServer(QuicConnection* connection);
84
85 static void SetIsServer(QuicConnection* connection, bool is_server);
86
[email protected]4e49b6a2013-06-18 16:39:2887 static void SetSelfAddress(QuicConnection* connection,
88 const IPEndPoint& self_address);
89
[email protected]97cf3022013-09-05 14:30:1690 static void SetPeerAddress(QuicConnection* connection,
91 const IPEndPoint& peer_address);
92
[email protected]2532de12013-05-09 12:29:3393 static void SwapCrypters(QuicConnection* connection, QuicFramer* framer);
94
[email protected]899951652013-05-16 12:52:3995 static QuicConnectionHelperInterface* GetHelper(QuicConnection* connection);
96
[email protected]ec640112013-08-09 03:56:1897 static QuicFramer* GetFramer(QuicConnection* connection);
98
[email protected]899951652013-05-16 12:52:3999 // Set last_header_->fec_group = fec_group and return connection->GetFecGroup
100 static QuicFecGroup* GetFecGroup(QuicConnection* connection, int fec_group);
101
[email protected]965dbe62013-08-09 21:34:31102 static QuicAlarm* GetAckAlarm(QuicConnection* connection);
103 static QuicAlarm* GetRetransmissionAlarm(QuicConnection* connection);
104 static QuicAlarm* GetSendAlarm(QuicConnection* connection);
[email protected]0741d712013-10-08 00:10:11105 static QuicAlarm* GetResumeWritesAlarm(QuicConnection* connection);
[email protected]965dbe62013-08-09 21:34:31106 static QuicAlarm* GetTimeoutAlarm(QuicConnection* connection);
107
[email protected]cbd731e2013-10-24 00:20:39108 static QuicPacketWriter* GetWriter(QuicConnection* connection);
109 static void SetWriter(QuicConnection* connection, QuicTestWriter* writer);
110
[email protected]b1f287d2012-12-22 17:25:39111 private:
112 DISALLOW_COPY_AND_ASSIGN(QuicConnectionPeer);
113};
114
115} // namespace test
116} // namespace net
117
118#endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_PEER_H_