// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/quic/test_tools/quic_connection_peer.h" #include "base/stl_util.h" #include "net/quic/congestion_control/receive_algorithm_interface.h" #include "net/quic/congestion_control/send_algorithm_interface.h" #include "net/quic/quic_connection.h" #include "net/quic/quic_packet_writer.h" #include "net/quic/quic_received_packet_manager.h" #include "net/quic/test_tools/quic_framer_peer.h" #include "net/quic/test_tools/quic_packet_generator_peer.h" #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" namespace net { namespace test { // static void QuicConnectionPeer::SendAck(QuicConnection* connection) { connection->SendAck(); } // static void QuicConnectionPeer::SetReceiveAlgorithm( QuicConnection* connection, ReceiveAlgorithmInterface* receive_algorithm) { connection->received_packet_manager_.receive_algorithm_.reset( receive_algorithm); } // static void QuicConnectionPeer::SetSendAlgorithm( QuicConnection* connection, SendAlgorithmInterface* send_algorithm) { connection->sent_packet_manager_.send_algorithm_.reset(send_algorithm); } // static QuicAckFrame* QuicConnectionPeer::CreateAckFrame(QuicConnection* connection) { return connection->CreateAckFrame(); } // static QuicStopWaitingFrame* QuicConnectionPeer::CreateStopWaitingFrame( QuicConnection* connection) { return connection->CreateStopWaitingFrame(); } // static QuicConnectionVisitorInterface* QuicConnectionPeer::GetVisitor( QuicConnection* connection) { return connection->visitor_; } // static QuicPacketCreator* QuicConnectionPeer::GetPacketCreator( QuicConnection* connection) { return QuicPacketGeneratorPeer::GetPacketCreator( &connection->packet_generator_); } // static QuicPacketGenerator* QuicConnectionPeer::GetPacketGenerator( QuicConnection* connection) { return &connection->packet_generator_; } // static QuicSentPacketManager* QuicConnectionPeer::GetSentPacketManager( QuicConnection* connection) { return &connection->sent_packet_manager_; } // static QuicReceivedPacketManager* QuicConnectionPeer::GetReceivedPacketManager( QuicConnection* connection) { return &connection->received_packet_manager_; } // static QuicTime::Delta QuicConnectionPeer::GetNetworkTimeout( QuicConnection* connection) { return connection->idle_network_timeout_; } // static bool QuicConnectionPeer::IsSavedForRetransmission( QuicConnection* connection, QuicPacketSequenceNumber sequence_number) { return connection->sent_packet_manager_.IsUnacked(sequence_number) && connection->sent_packet_manager_.HasRetransmittableFrames( sequence_number); } // static bool QuicConnectionPeer::IsRetransmission( QuicConnection* connection, QuicPacketSequenceNumber sequence_number) { return QuicSentPacketManagerPeer::IsRetransmission( &connection->sent_packet_manager_, sequence_number); } // static // TODO(ianswett): Create a GetSentEntropyHash which accepts an AckFrame. QuicPacketEntropyHash QuicConnectionPeer::GetSentEntropyHash( QuicConnection* connection, QuicPacketSequenceNumber sequence_number) { QuicSentEntropyManager::CumulativeEntropy last_entropy_copy = connection->sent_entropy_manager_.last_cumulative_entropy_; connection->sent_entropy_manager_.UpdateCumulativeEntropy(sequence_number, &last_entropy_copy); return last_entropy_copy.entropy; } // static QuicPacketEntropyHash QuicConnectionPeer::PacketEntropy( QuicConnection* connection, QuicPacketSequenceNumber sequence_number) { return connection->sent_entropy_manager_.GetPacketEntropy(sequence_number); } // static QuicPacketEntropyHash QuicConnectionPeer::ReceivedEntropyHash( QuicConnection* connection, QuicPacketSequenceNumber sequence_number) { return connection->received_packet_manager_.EntropyHash( sequence_number); } // static bool QuicConnectionPeer::IsServer(QuicConnection* connection) { return connection->is_server_; } // static void QuicConnectionPeer::SetIsServer(QuicConnection* connection, bool is_server) { connection->is_server_ = is_server; QuicFramerPeer::SetIsServer(&connection->framer_, is_server); } // static void QuicConnectionPeer::SetSelfAddress(QuicConnection* connection, const IPEndPoint& self_address) { connection->self_address_ = self_address; } // static void QuicConnectionPeer::SetPeerAddress(QuicConnection* connection, const IPEndPoint& peer_address) { connection->peer_address_ = peer_address; } // static void QuicConnectionPeer::SwapCrypters(QuicConnection* connection, QuicFramer* framer) { QuicFramerPeer::SwapCrypters(framer, &connection->framer_); } // static QuicConnectionHelperInterface* QuicConnectionPeer::GetHelper( QuicConnection* connection) { return connection->helper_; } // static QuicFramer* QuicConnectionPeer::GetFramer(QuicConnection* connection) { return &connection->framer_; } // static QuicFecGroup* QuicConnectionPeer::GetFecGroup(QuicConnection* connection, int fec_group) { connection->last_header_.fec_group = fec_group; return connection->GetFecGroup(); } // static QuicAlarm* QuicConnectionPeer::GetAckAlarm(QuicConnection* connection) { return connection->ack_alarm_.get(); } // static QuicAlarm* QuicConnectionPeer::GetPingAlarm(QuicConnection* connection) { return connection->ping_alarm_.get(); } // static QuicAlarm* QuicConnectionPeer::GetResumeWritesAlarm( QuicConnection* connection) { return connection->resume_writes_alarm_.get(); } // static QuicAlarm* QuicConnectionPeer::GetRetransmissionAlarm( QuicConnection* connection) { return connection->retransmission_alarm_.get(); } // static QuicAlarm* QuicConnectionPeer::GetSendAlarm(QuicConnection* connection) { return connection->send_alarm_.get(); } // static QuicAlarm* QuicConnectionPeer::GetTimeoutAlarm(QuicConnection* connection) { return connection->timeout_alarm_.get(); } // static QuicPacketWriter* QuicConnectionPeer::GetWriter(QuicConnection* connection) { return connection->writer_; } // static void QuicConnectionPeer::SetWriter(QuicConnection* connection, QuicPacketWriter* writer, bool owns_writer) { if (connection->owns_writer_) { delete connection->writer_; } connection->writer_ = writer; connection->owns_writer_ = owns_writer; } // static void QuicConnectionPeer::CloseConnection(QuicConnection* connection) { connection->connected_ = false; } // static QuicEncryptedPacket* QuicConnectionPeer::GetConnectionClosePacket( QuicConnection* connection) { return connection->connection_close_packet_.get(); } // static void QuicConnectionPeer::SetSupportedVersions(QuicConnection* connection, QuicVersionVector versions) { connection->framer_.SetSupportedVersions(versions); } } // namespace test } // namespace net