• 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 #include "net/quic/test_tools/quic_connection_peer.h"
6 
7 #include "base/stl_util.h"
8 #include "net/quic/congestion_control/receive_algorithm_interface.h"
9 #include "net/quic/congestion_control/send_algorithm_interface.h"
10 #include "net/quic/quic_connection.h"
11 #include "net/quic/quic_packet_writer.h"
12 #include "net/quic/quic_received_packet_manager.h"
13 #include "net/quic/test_tools/quic_framer_peer.h"
14 #include "net/quic/test_tools/quic_packet_generator_peer.h"
15 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h"
16 
17 namespace net {
18 namespace test {
19 
20 // static
SendAck(QuicConnection * connection)21 void QuicConnectionPeer::SendAck(QuicConnection* connection) {
22   connection->SendAck();
23 }
24 
25 // static
SetReceiveAlgorithm(QuicConnection * connection,ReceiveAlgorithmInterface * receive_algorithm)26 void QuicConnectionPeer::SetReceiveAlgorithm(
27     QuicConnection* connection,
28     ReceiveAlgorithmInterface* receive_algorithm) {
29   connection->received_packet_manager_.receive_algorithm_.reset(
30       receive_algorithm);
31 }
32 
33 // static
SetSendAlgorithm(QuicConnection * connection,SendAlgorithmInterface * send_algorithm)34 void QuicConnectionPeer::SetSendAlgorithm(
35     QuicConnection* connection,
36     SendAlgorithmInterface* send_algorithm) {
37   connection->sent_packet_manager_.send_algorithm_.reset(send_algorithm);
38 }
39 
40 // static
CreateAckFrame(QuicConnection * connection)41 QuicAckFrame* QuicConnectionPeer::CreateAckFrame(QuicConnection* connection) {
42   return connection->CreateAckFrame();
43 }
44 
45 // static
GetVisitor(QuicConnection * connection)46 QuicConnectionVisitorInterface* QuicConnectionPeer::GetVisitor(
47     QuicConnection* connection) {
48   return connection->visitor_;
49 }
50 
51 // static
GetPacketCreator(QuicConnection * connection)52 QuicPacketCreator* QuicConnectionPeer::GetPacketCreator(
53     QuicConnection* connection) {
54   return QuicPacketGeneratorPeer::GetPacketCreator(
55       &connection->packet_generator_);
56 }
57 
58 // static
GetPacketGenerator(QuicConnection * connection)59 QuicPacketGenerator* QuicConnectionPeer::GetPacketGenerator(
60     QuicConnection* connection) {
61   return &connection->packet_generator_;
62 }
63 
64 // static
GetSentPacketManager(QuicConnection * connection)65 QuicSentPacketManager* QuicConnectionPeer::GetSentPacketManager(
66     QuicConnection* connection) {
67   return &connection->sent_packet_manager_;
68 }
69 
70 // static
GetReceivedPacketManager(QuicConnection * connection)71 QuicReceivedPacketManager* QuicConnectionPeer::GetReceivedPacketManager(
72     QuicConnection* connection) {
73   return &connection->received_packet_manager_;
74 }
75 
76 // static
GetNetworkTimeout(QuicConnection * connection)77 QuicTime::Delta QuicConnectionPeer::GetNetworkTimeout(
78     QuicConnection* connection) {
79   return connection->idle_network_timeout_;
80 }
81 
82 // static
IsSavedForRetransmission(QuicConnection * connection,QuicPacketSequenceNumber sequence_number)83 bool QuicConnectionPeer::IsSavedForRetransmission(
84     QuicConnection* connection,
85     QuicPacketSequenceNumber sequence_number) {
86   return connection->sent_packet_manager_.IsUnacked(sequence_number) &&
87       connection->sent_packet_manager_.HasRetransmittableFrames(
88           sequence_number);
89 }
90 
91 // static
IsRetransmission(QuicConnection * connection,QuicPacketSequenceNumber sequence_number)92 bool QuicConnectionPeer::IsRetransmission(
93     QuicConnection* connection,
94     QuicPacketSequenceNumber sequence_number) {
95   return QuicSentPacketManagerPeer::IsRetransmission(
96       &connection->sent_packet_manager_, sequence_number);
97 }
98 
99 // static
100 // TODO(ianswett): Create a GetSentEntropyHash which accepts an AckFrame.
GetSentEntropyHash(QuicConnection * connection,QuicPacketSequenceNumber sequence_number)101 QuicPacketEntropyHash QuicConnectionPeer::GetSentEntropyHash(
102     QuicConnection* connection,
103     QuicPacketSequenceNumber sequence_number) {
104   return connection->sent_entropy_manager_.EntropyHash(sequence_number);
105 }
106 
107 // static
IsValidEntropy(QuicConnection * connection,QuicPacketSequenceNumber largest_observed,const SequenceNumberSet & missing_packets,QuicPacketEntropyHash entropy_hash)108 bool QuicConnectionPeer::IsValidEntropy(
109     QuicConnection* connection,
110     QuicPacketSequenceNumber largest_observed,
111     const SequenceNumberSet& missing_packets,
112     QuicPacketEntropyHash entropy_hash) {
113   return connection->sent_entropy_manager_.IsValidEntropy(
114       largest_observed, missing_packets, entropy_hash);
115 }
116 
117 // static
ReceivedEntropyHash(QuicConnection * connection,QuicPacketSequenceNumber sequence_number)118 QuicPacketEntropyHash QuicConnectionPeer::ReceivedEntropyHash(
119     QuicConnection* connection,
120     QuicPacketSequenceNumber sequence_number) {
121   return connection->received_packet_manager_.EntropyHash(
122       sequence_number);
123 }
124 
125 // static
IsServer(QuicConnection * connection)126 bool QuicConnectionPeer::IsServer(QuicConnection* connection) {
127   return connection->is_server_;
128 }
129 
130 // static
SetIsServer(QuicConnection * connection,bool is_server)131 void QuicConnectionPeer::SetIsServer(QuicConnection* connection,
132                                      bool is_server) {
133   connection->is_server_ = is_server;
134   QuicFramerPeer::SetIsServer(&connection->framer_, is_server);
135 }
136 
137 // static
SetSelfAddress(QuicConnection * connection,const IPEndPoint & self_address)138 void QuicConnectionPeer::SetSelfAddress(QuicConnection* connection,
139                                         const IPEndPoint& self_address) {
140   connection->self_address_ = self_address;
141 }
142 
143 // static
SetPeerAddress(QuicConnection * connection,const IPEndPoint & peer_address)144 void QuicConnectionPeer::SetPeerAddress(QuicConnection* connection,
145                                         const IPEndPoint& peer_address) {
146   connection->peer_address_ = peer_address;
147 }
148 
149 // static
SwapCrypters(QuicConnection * connection,QuicFramer * framer)150 void QuicConnectionPeer::SwapCrypters(QuicConnection* connection,
151                                       QuicFramer* framer) {
152   QuicFramerPeer::SwapCrypters(framer, &connection->framer_);
153 }
154 
155 // static
GetHelper(QuicConnection * connection)156 QuicConnectionHelperInterface* QuicConnectionPeer::GetHelper(
157     QuicConnection* connection) {
158   return connection->helper_;
159 }
160 
161 // static
GetFramer(QuicConnection * connection)162 QuicFramer* QuicConnectionPeer::GetFramer(QuicConnection* connection) {
163   return &connection->framer_;
164 }
165 
GetFecGroup(QuicConnection * connection,int fec_group)166 QuicFecGroup* QuicConnectionPeer::GetFecGroup(QuicConnection* connection,
167                                               int fec_group) {
168   connection->last_header_.fec_group = fec_group;
169   return connection->GetFecGroup();
170 }
171 
172 // static
GetAckAlarm(QuicConnection * connection)173 QuicAlarm* QuicConnectionPeer::GetAckAlarm(QuicConnection* connection) {
174   return connection->ack_alarm_.get();
175 }
176 
177 // static
GetPingAlarm(QuicConnection * connection)178 QuicAlarm* QuicConnectionPeer::GetPingAlarm(QuicConnection* connection) {
179   return connection->ping_alarm_.get();
180 }
181 
182 // static
GetResumeWritesAlarm(QuicConnection * connection)183 QuicAlarm* QuicConnectionPeer::GetResumeWritesAlarm(
184     QuicConnection* connection) {
185   return connection->resume_writes_alarm_.get();
186 }
187 
188 // static
GetRetransmissionAlarm(QuicConnection * connection)189 QuicAlarm* QuicConnectionPeer::GetRetransmissionAlarm(
190     QuicConnection* connection) {
191   return connection->retransmission_alarm_.get();
192 }
193 
194 // static
GetSendAlarm(QuicConnection * connection)195 QuicAlarm* QuicConnectionPeer::GetSendAlarm(QuicConnection* connection) {
196   return connection->send_alarm_.get();
197 }
198 
199 // static
GetTimeoutAlarm(QuicConnection * connection)200 QuicAlarm* QuicConnectionPeer::GetTimeoutAlarm(QuicConnection* connection) {
201   return connection->timeout_alarm_.get();
202 }
203 
204 // static
GetWriter(QuicConnection * connection)205 QuicPacketWriter* QuicConnectionPeer::GetWriter(QuicConnection* connection) {
206   return connection->writer_;
207 }
208 
209 // static
SetWriter(QuicConnection * connection,QuicPacketWriter * writer)210 void QuicConnectionPeer::SetWriter(QuicConnection* connection,
211                                    QuicPacketWriter* writer) {
212   connection->writer_ = writer;
213 }
214 
215 // static
CloseConnection(QuicConnection * connection)216 void QuicConnectionPeer::CloseConnection(QuicConnection* connection) {
217   connection->connected_ = false;
218 }
219 
220 // static
GetConnectionClosePacket(QuicConnection * connection)221 QuicEncryptedPacket* QuicConnectionPeer::GetConnectionClosePacket(
222     QuicConnection* connection) {
223   return connection->connection_close_packet_.get();
224 }
225 
226 // static
SetSupportedVersions(QuicConnection * connection,QuicVersionVector versions)227 void QuicConnectionPeer::SetSupportedVersions(QuicConnection* connection,
228                                               QuicVersionVector versions) {
229   connection->framer_.SetSupportedVersions(versions);
230 }
231 
232 }  // namespace test
233 }  // namespace net
234