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_protocol.h" 11 #include "net/quic/quic_stats.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 QuicFecGroup; 22 class QuicFramer; 23 class QuicPacketCreator; 24 class ReceiveAlgorithmInterface; 25 class SendAlgorithmInterface; 26 27 namespace test { 28 29 // Peer to make public a number of otherwise private QuicConnection methods. 30 class QuicConnectionPeer { 31 public: 32 static void SendAck(QuicConnection* connection); 33 34 static void SetReceiveAlgorithm(QuicConnection* connection, 35 ReceiveAlgorithmInterface* receive_algorithm); 36 37 static void SetSendAlgorithm(QuicConnection* connection, 38 SendAlgorithmInterface* send_algorithm); 39 40 static QuicAckFrame* CreateAckFrame(QuicConnection* connection); 41 42 static QuicConnectionVisitorInterface* GetVisitor( 43 QuicConnection* connection); 44 45 static QuicPacketCreator* GetPacketCreator(QuicConnection* connection); 46 47 static bool GetReceivedTruncatedAck(QuicConnection* connection); 48 49 static size_t GetNumRetransmissionTimeouts(QuicConnection* connection); 50 51 static QuicTime::Delta GetNetworkTimeout(QuicConnection* connection); 52 53 static bool IsSavedForRetransmission( 54 QuicConnection* connection, 55 QuicPacketSequenceNumber sequence_number); 56 57 static size_t GetRetransmissionCount( 58 QuicConnection* connection, 59 QuicPacketSequenceNumber sequence_number); 60 61 static QuicPacketEntropyHash GetSentEntropyHash( 62 QuicConnection* connection, 63 QuicPacketSequenceNumber sequence_number); 64 65 static bool IsValidEntropy(QuicConnection* connection, 66 QuicPacketSequenceNumber largest_observed, 67 const SequenceNumberSet& missing_packets, 68 QuicPacketEntropyHash entropy_hash); 69 70 static QuicPacketEntropyHash ReceivedEntropyHash( 71 QuicConnection* connection, 72 QuicPacketSequenceNumber sequence_number); 73 74 static bool IsServer(QuicConnection* connection); 75 76 static void SetIsServer(QuicConnection* connection, bool is_server); 77 78 static void SetSelfAddress(QuicConnection* connection, 79 const IPEndPoint& self_address); 80 81 static void SwapCrypters(QuicConnection* connection, QuicFramer* framer); 82 83 static void SetMaxPacketsPerRetransmissionAlarm(QuicConnection* connection, 84 int max_packets); 85 86 static QuicConnectionHelperInterface* GetHelper(QuicConnection* connection); 87 88 static QuicFramer* GetFramer(QuicConnection* connection); 89 90 // Set last_header_->fec_group = fec_group and return connection->GetFecGroup 91 static QuicFecGroup* GetFecGroup(QuicConnection* connection, int fec_group); 92 93 static QuicAlarm* GetAckAlarm(QuicConnection* connection); 94 static QuicAlarm* GetRetransmissionAlarm(QuicConnection* connection); 95 static QuicAlarm* GetSendAlarm(QuicConnection* connection); 96 static QuicAlarm* GetTimeoutAlarm(QuicConnection* connection); 97 98 private: 99 DISALLOW_COPY_AND_ASSIGN(QuicConnectionPeer); 100 }; 101 102 } // namespace test 103 } // namespace net 104 105 #endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_PEER_H_ 106