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