Home | History | Annotate | Download | only in test_tools
      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