• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
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"
9 #include "net/base/ip_endpoint.h"
10 #include "net/quic/quic_connection_stats.h"
11 #include "net/quic/quic_protocol.h"
12 
13 namespace net {
14 
15 struct QuicAckFrame;
16 struct QuicPacketHeader;
17 class QuicAlarm;
18 class QuicConnection;
19 class QuicConnectionHelperInterface;
20 class QuicConnectionVisitorInterface;
21 class QuicEncryptedPacket;
22 class QuicFecGroup;
23 class QuicFramer;
24 class QuicPacketCreator;
25 class QuicPacketGenerator;
26 class QuicPacketWriter;
27 class QuicReceivedPacketManager;
28 class QuicSentPacketManager;
29 class ReceiveAlgorithmInterface;
30 class SendAlgorithmInterface;
31 
32 namespace test {
33 
34 // Peer to make public a number of otherwise private QuicConnection methods.
35 class QuicConnectionPeer {
36  public:
37   static void SendAck(QuicConnection* connection);
38 
39   static void SetReceiveAlgorithm(QuicConnection* connection,
40                                   ReceiveAlgorithmInterface* receive_algorithm);
41 
42   static void SetSendAlgorithm(QuicConnection* connection,
43                                SendAlgorithmInterface* send_algorithm);
44 
45   static QuicAckFrame* CreateAckFrame(QuicConnection* connection);
46 
47   static QuicConnectionVisitorInterface* GetVisitor(
48       QuicConnection* connection);
49 
50   static QuicPacketCreator* GetPacketCreator(QuicConnection* connection);
51 
52   static QuicPacketGenerator* GetPacketGenerator(QuicConnection* connection);
53 
54   static QuicSentPacketManager* GetSentPacketManager(
55       QuicConnection* connection);
56 
57   static QuicReceivedPacketManager* GetReceivedPacketManager(
58       QuicConnection* connection);
59 
60   static QuicTime::Delta GetNetworkTimeout(QuicConnection* connection);
61 
62   static bool IsSavedForRetransmission(
63       QuicConnection* connection,
64       QuicPacketSequenceNumber sequence_number);
65 
66   static bool IsRetransmission(QuicConnection* connection,
67                                QuicPacketSequenceNumber sequence_number);
68 
69   static QuicPacketEntropyHash GetSentEntropyHash(
70       QuicConnection* connection,
71       QuicPacketSequenceNumber sequence_number);
72 
73   static bool IsValidEntropy(QuicConnection* connection,
74                              QuicPacketSequenceNumber largest_observed,
75                              const SequenceNumberSet& missing_packets,
76                              QuicPacketEntropyHash entropy_hash);
77 
78   static QuicPacketEntropyHash ReceivedEntropyHash(
79       QuicConnection* connection,
80       QuicPacketSequenceNumber sequence_number);
81 
82   static bool IsServer(QuicConnection* connection);
83 
84   static void SetIsServer(QuicConnection* connection, bool is_server);
85 
86   static void SetSelfAddress(QuicConnection* connection,
87                              const IPEndPoint& self_address);
88 
89   static void SetPeerAddress(QuicConnection* connection,
90                              const IPEndPoint& peer_address);
91 
92   static void SwapCrypters(QuicConnection* connection, QuicFramer* framer);
93 
94   static QuicConnectionHelperInterface* GetHelper(QuicConnection* connection);
95 
96   static QuicFramer* GetFramer(QuicConnection* connection);
97 
98   // Set last_header_->fec_group = fec_group and return connection->GetFecGroup
99   static QuicFecGroup* GetFecGroup(QuicConnection* connection, int fec_group);
100 
101   static QuicAlarm* GetAckAlarm(QuicConnection* connection);
102   static QuicAlarm* GetPingAlarm(QuicConnection* connection);
103   static QuicAlarm* GetResumeWritesAlarm(QuicConnection* connection);
104   static QuicAlarm* GetRetransmissionAlarm(QuicConnection* connection);
105   static QuicAlarm* GetSendAlarm(QuicConnection* connection);
106   static QuicAlarm* GetTimeoutAlarm(QuicConnection* connection);
107 
108   static QuicPacketWriter* GetWriter(QuicConnection* connection);
109   static void SetWriter(QuicConnection* connection, QuicPacketWriter* writer);
110   static void CloseConnection(QuicConnection* connection);
111   static QuicEncryptedPacket* GetConnectionClosePacket(
112       QuicConnection* connection);
113 
114   static void SetSupportedVersions(QuicConnection* connection,
115                                    QuicVersionVector versions);
116 
117  private:
118   DISALLOW_COPY_AND_ASSIGN(QuicConnectionPeer);
119 };
120 
121 }  // namespace test
122 
123 }  // namespace net
124 
125 #endif  // NET_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_
126