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_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