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 #include "net/quic/test_tools/quic_connection_peer.h"
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"
21 void QuicConnectionPeer::SendAck(QuicConnection* connection) {
22 connection->SendAck();
26 void QuicConnectionPeer::SetReceiveAlgorithm(
27 QuicConnection* connection,
28 ReceiveAlgorithmInterface* receive_algorithm) {
29 connection->received_packet_manager_.receive_algorithm_.reset(
34 void QuicConnectionPeer::SetSendAlgorithm(
35 QuicConnection* connection,
36 SendAlgorithmInterface* send_algorithm) {
37 connection->sent_packet_manager_.send_algorithm_.reset(send_algorithm);
41 QuicAckFrame* QuicConnectionPeer::CreateAckFrame(QuicConnection* connection) {
42 return connection->CreateAckFrame();
46 QuicStopWaitingFrame* QuicConnectionPeer::CreateStopWaitingFrame(
47 QuicConnection* connection) {
48 return connection->CreateStopWaitingFrame();
52 QuicConnectionVisitorInterface* QuicConnectionPeer::GetVisitor(
53 QuicConnection* connection) {
54 return connection->visitor_;
58 QuicPacketCreator* QuicConnectionPeer::GetPacketCreator(
59 QuicConnection* connection) {
60 return QuicPacketGeneratorPeer::GetPacketCreator(
61 &connection->packet_generator_);
65 QuicPacketGenerator* QuicConnectionPeer::GetPacketGenerator(
66 QuicConnection* connection) {
67 return &connection->packet_generator_;
71 QuicSentPacketManager* QuicConnectionPeer::GetSentPacketManager(
72 QuicConnection* connection) {
73 return &connection->sent_packet_manager_;
77 QuicReceivedPacketManager* QuicConnectionPeer::GetReceivedPacketManager(
78 QuicConnection* connection) {
79 return &connection->received_packet_manager_;
83 QuicTime::Delta QuicConnectionPeer::GetNetworkTimeout(
84 QuicConnection* connection) {
85 return connection->idle_network_timeout_;
89 bool QuicConnectionPeer::IsSavedForRetransmission(
90 QuicConnection* connection,
91 QuicPacketSequenceNumber sequence_number) {
92 return connection->sent_packet_manager_.IsUnacked(sequence_number) &&
93 connection->sent_packet_manager_.HasRetransmittableFrames(
98 bool QuicConnectionPeer::IsRetransmission(
99 QuicConnection* connection,
100 QuicPacketSequenceNumber sequence_number) {
101 return QuicSentPacketManagerPeer::IsRetransmission(
102 &connection->sent_packet_manager_, sequence_number);
106 // TODO(ianswett): Create a GetSentEntropyHash which accepts an AckFrame.
107 QuicPacketEntropyHash QuicConnectionPeer::GetSentEntropyHash(
108 QuicConnection* connection,
109 QuicPacketSequenceNumber sequence_number) {
110 return connection->sent_entropy_manager_.EntropyHash(sequence_number);
114 bool QuicConnectionPeer::IsValidEntropy(
115 QuicConnection* connection,
116 QuicPacketSequenceNumber largest_observed,
117 const SequenceNumberSet& missing_packets,
118 QuicPacketEntropyHash entropy_hash) {
119 return connection->sent_entropy_manager_.IsValidEntropy(
120 largest_observed, missing_packets, entropy_hash);
124 QuicPacketEntropyHash QuicConnectionPeer::ReceivedEntropyHash(
125 QuicConnection* connection,
126 QuicPacketSequenceNumber sequence_number) {
127 return connection->received_packet_manager_.EntropyHash(
132 bool QuicConnectionPeer::IsServer(QuicConnection* connection) {
133 return connection->is_server_;
137 void QuicConnectionPeer::SetIsServer(QuicConnection* connection,
139 connection->is_server_ = is_server;
140 QuicFramerPeer::SetIsServer(&connection->framer_, is_server);
144 void QuicConnectionPeer::SetSelfAddress(QuicConnection* connection,
145 const IPEndPoint& self_address) {
146 connection->self_address_ = self_address;
150 void QuicConnectionPeer::SetPeerAddress(QuicConnection* connection,
151 const IPEndPoint& peer_address) {
152 connection->peer_address_ = peer_address;
156 void QuicConnectionPeer::SwapCrypters(QuicConnection* connection,
157 QuicFramer* framer) {
158 QuicFramerPeer::SwapCrypters(framer, &connection->framer_);
162 QuicConnectionHelperInterface* QuicConnectionPeer::GetHelper(
163 QuicConnection* connection) {
164 return connection->helper_;
168 QuicFramer* QuicConnectionPeer::GetFramer(QuicConnection* connection) {
169 return &connection->framer_;
172 QuicFecGroup* QuicConnectionPeer::GetFecGroup(QuicConnection* connection,
174 connection->last_header_.fec_group = fec_group;
175 return connection->GetFecGroup();
179 QuicAlarm* QuicConnectionPeer::GetAckAlarm(QuicConnection* connection) {
180 return connection->ack_alarm_.get();
184 QuicAlarm* QuicConnectionPeer::GetPingAlarm(QuicConnection* connection) {
185 return connection->ping_alarm_.get();
189 QuicAlarm* QuicConnectionPeer::GetResumeWritesAlarm(
190 QuicConnection* connection) {
191 return connection->resume_writes_alarm_.get();
195 QuicAlarm* QuicConnectionPeer::GetRetransmissionAlarm(
196 QuicConnection* connection) {
197 return connection->retransmission_alarm_.get();
201 QuicAlarm* QuicConnectionPeer::GetSendAlarm(QuicConnection* connection) {
202 return connection->send_alarm_.get();
206 QuicAlarm* QuicConnectionPeer::GetTimeoutAlarm(QuicConnection* connection) {
207 return connection->timeout_alarm_.get();
211 QuicPacketWriter* QuicConnectionPeer::GetWriter(QuicConnection* connection) {
212 return connection->writer_;
216 void QuicConnectionPeer::SetWriter(QuicConnection* connection,
217 QuicPacketWriter* writer,
219 if (connection->owns_writer_) {
220 delete connection->writer_;
222 connection->writer_ = writer;
223 connection->owns_writer_ = owns_writer;
227 void QuicConnectionPeer::CloseConnection(QuicConnection* connection) {
228 connection->connected_ = false;
232 QuicEncryptedPacket* QuicConnectionPeer::GetConnectionClosePacket(
233 QuicConnection* connection) {
234 return connection->connection_close_packet_.get();
238 void QuicConnectionPeer::SetSupportedVersions(QuicConnection* connection,
239 QuicVersionVector versions) {
240 connection->framer_.SetSupportedVersions(versions);