blob: 591644678ff8b9a9846f15e0d7dde13fe7bc75f7 [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]b1f287d2012-12-22 17:25:3918class QuicConnection;
[email protected]899951652013-05-16 12:52:3919class QuicConnectionHelperInterface;
[email protected]b1f287d2012-12-22 17:25:3920class QuicConnectionVisitorInterface;
[email protected]899951652013-05-16 12:52:3921class QuicFecGroup;
[email protected]2532de12013-05-09 12:29:3322class QuicFramer;
[email protected]c995c572013-01-18 05:43:2023class QuicPacketCreator;
[email protected]cbd731e2013-10-24 00:20:3924class QuicPacketWriter;
[email protected]e6ccc1a62013-12-02 07:02:1225class QuicReceivedPacketManager;
[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]e6ccc1a62013-12-02 07:02:1251 static QuicReceivedPacketManager* GetReceivedPacketManager(
52 QuicConnection* connection);
[email protected]fee17f72013-02-03 07:47:4153
[email protected]b064310782013-05-30 21:12:1754 static QuicTime::Delta GetNetworkTimeout(QuicConnection* connection);
[email protected]899951652013-05-16 12:52:3955
[email protected]fee17f72013-02-03 07:47:4156 static bool IsSavedForRetransmission(
57 QuicConnection* connection,
58 QuicPacketSequenceNumber sequence_number);
59
[email protected]0ac0c5b2013-11-20 05:55:5860 static bool IsRetransmission(QuicConnection* connection,
61 QuicPacketSequenceNumber sequence_number);
[email protected]fee17f72013-02-03 07:47:4162
[email protected]9db443912013-02-25 05:27:0363 static QuicPacketEntropyHash GetSentEntropyHash(
64 QuicConnection* connection,
65 QuicPacketSequenceNumber sequence_number);
66
67 static bool IsValidEntropy(QuicConnection* connection,
68 QuicPacketSequenceNumber largest_observed,
69 const SequenceNumberSet& missing_packets,
70 QuicPacketEntropyHash entropy_hash);
71
72 static QuicPacketEntropyHash ReceivedEntropyHash(
73 QuicConnection* connection,
74 QuicPacketSequenceNumber sequence_number);
75
[email protected]0741d712013-10-08 00:10:1176 static bool IsWriteBlocked(QuicConnection* connection);
77
78 static void SetIsWriteBlocked(QuicConnection* connection, bool write_blocked);
79
[email protected]14e8106c2013-03-14 16:25:3380 static bool IsServer(QuicConnection* connection);
81
82 static void SetIsServer(QuicConnection* connection, bool is_server);
83
[email protected]4e49b6a2013-06-18 16:39:2884 static void SetSelfAddress(QuicConnection* connection,
85 const IPEndPoint& self_address);
86
[email protected]97cf3022013-09-05 14:30:1687 static void SetPeerAddress(QuicConnection* connection,
88 const IPEndPoint& peer_address);
89
[email protected]2532de12013-05-09 12:29:3390 static void SwapCrypters(QuicConnection* connection, QuicFramer* framer);
91
[email protected]899951652013-05-16 12:52:3992 static QuicConnectionHelperInterface* GetHelper(QuicConnection* connection);
93
[email protected]ec640112013-08-09 03:56:1894 static QuicFramer* GetFramer(QuicConnection* connection);
95
[email protected]899951652013-05-16 12:52:3996 // Set last_header_->fec_group = fec_group and return connection->GetFecGroup
97 static QuicFecGroup* GetFecGroup(QuicConnection* connection, int fec_group);
98
[email protected]965dbe62013-08-09 21:34:3199 static QuicAlarm* GetAckAlarm(QuicConnection* connection);
100 static QuicAlarm* GetRetransmissionAlarm(QuicConnection* connection);
[email protected]d89f1862013-11-26 21:21:27101 static QuicAlarm* GetAbandonFecAlarm(QuicConnection* connection);
[email protected]965dbe62013-08-09 21:34:31102 static QuicAlarm* GetSendAlarm(QuicConnection* connection);
[email protected]0741d712013-10-08 00:10:11103 static QuicAlarm* GetResumeWritesAlarm(QuicConnection* connection);
[email protected]965dbe62013-08-09 21:34:31104 static QuicAlarm* GetTimeoutAlarm(QuicConnection* connection);
105
[email protected]cbd731e2013-10-24 00:20:39106 static QuicPacketWriter* GetWriter(QuicConnection* connection);
107 static void SetWriter(QuicConnection* connection, QuicTestWriter* writer);
108
[email protected]b1f287d2012-12-22 17:25:39109 private:
110 DISALLOW_COPY_AND_ASSIGN(QuicConnectionPeer);
111};
112
113} // namespace test
114} // namespace net
115
116#endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_PEER_H_