1 // 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.
5 #ifndef NET_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_
6 #define NET_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_
8 #include "base/basictypes.h"
9 #include "net/base/ip_endpoint.h"
10 #include "net/quic/quic_connection_stats.h"
11 #include "net/quic/quic_protocol.h"
16 struct QuicPacketHeader;
19 class QuicConnectionHelperInterface;
20 class QuicConnectionVisitorInterface;
21 class QuicEncryptedPacket;
24 class QuicPacketCreator;
25 class QuicPacketWriter;
26 class QuicReceivedPacketManager;
27 class QuicSentPacketManager;
28 class ReceiveAlgorithmInterface;
29 class SendAlgorithmInterface;
33 // Peer to make public a number of otherwise private QuicConnection methods.
34 class QuicConnectionPeer {
36 static void SendAck(QuicConnection* connection);
38 static void SetReceiveAlgorithm(QuicConnection* connection,
39 ReceiveAlgorithmInterface* receive_algorithm);
41 static void SetSendAlgorithm(QuicConnection* connection,
42 SendAlgorithmInterface* send_algorithm);
44 static QuicAckFrame* CreateAckFrame(QuicConnection* connection);
46 static QuicConnectionVisitorInterface* GetVisitor(
47 QuicConnection* connection);
49 static QuicPacketCreator* GetPacketCreator(QuicConnection* connection);
51 static QuicSentPacketManager* GetSentPacketManager(
52 QuicConnection* connection);
54 static QuicReceivedPacketManager* GetReceivedPacketManager(
55 QuicConnection* connection);
57 static QuicTime::Delta GetNetworkTimeout(QuicConnection* connection);
59 static bool IsSavedForRetransmission(
60 QuicConnection* connection,
61 QuicPacketSequenceNumber sequence_number);
63 static bool IsRetransmission(QuicConnection* connection,
64 QuicPacketSequenceNumber sequence_number);
66 static QuicPacketEntropyHash GetSentEntropyHash(
67 QuicConnection* connection,
68 QuicPacketSequenceNumber sequence_number);
70 static bool IsValidEntropy(QuicConnection* connection,
71 QuicPacketSequenceNumber largest_observed,
72 const SequenceNumberSet& missing_packets,
73 QuicPacketEntropyHash entropy_hash);
75 static QuicPacketEntropyHash ReceivedEntropyHash(
76 QuicConnection* connection,
77 QuicPacketSequenceNumber sequence_number);
79 static bool IsServer(QuicConnection* connection);
81 static void SetIsServer(QuicConnection* connection, bool is_server);
83 static void SetSelfAddress(QuicConnection* connection,
84 const IPEndPoint& self_address);
86 static void SetPeerAddress(QuicConnection* connection,
87 const IPEndPoint& peer_address);
89 static void SwapCrypters(QuicConnection* connection, QuicFramer* framer);
91 static QuicConnectionHelperInterface* GetHelper(QuicConnection* connection);
93 static QuicFramer* GetFramer(QuicConnection* connection);
95 // Set last_header_->fec_group = fec_group and return connection->GetFecGroup
96 static QuicFecGroup* GetFecGroup(QuicConnection* connection, int fec_group);
98 static QuicAlarm* GetAckAlarm(QuicConnection* connection);
99 static QuicAlarm* GetPingAlarm(QuicConnection* connection);
100 static QuicAlarm* GetResumeWritesAlarm(QuicConnection* connection);
101 static QuicAlarm* GetRetransmissionAlarm(QuicConnection* connection);
102 static QuicAlarm* GetSendAlarm(QuicConnection* connection);
103 static QuicAlarm* GetTimeoutAlarm(QuicConnection* connection);
105 static QuicPacketWriter* GetWriter(QuicConnection* connection);
106 static void SetWriter(QuicConnection* connection, QuicPacketWriter* writer);
107 static void CloseConnection(QuicConnection* connection);
108 static QuicEncryptedPacket* GetConnectionClosePacket(
109 QuicConnection* connection);
112 DISALLOW_COPY_AND_ASSIGN(QuicConnectionPeer);
119 #endif // NET_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_