Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / net / quic / test_tools / quic_connection_peer.h
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 QuicPacketWriter;
26 class QuicReceivedPacketManager;
27 class QuicSentPacketManager;
28 class ReceiveAlgorithmInterface;
29 class SendAlgorithmInterface;
30
31 namespace test {
32
33 // Peer to make public a number of otherwise private QuicConnection methods.
34 class QuicConnectionPeer {
35  public:
36   static void SendAck(QuicConnection* connection);
37
38   static void SetReceiveAlgorithm(QuicConnection* connection,
39                                   ReceiveAlgorithmInterface* receive_algorithm);
40
41   static void SetSendAlgorithm(QuicConnection* connection,
42                                SendAlgorithmInterface* send_algorithm);
43
44   static QuicAckFrame* CreateAckFrame(QuicConnection* connection);
45
46   static QuicConnectionVisitorInterface* GetVisitor(
47       QuicConnection* connection);
48
49   static QuicPacketCreator* GetPacketCreator(QuicConnection* connection);
50
51   static QuicSentPacketManager* GetSentPacketManager(
52       QuicConnection* connection);
53
54   static QuicReceivedPacketManager* GetReceivedPacketManager(
55       QuicConnection* connection);
56
57   static QuicTime::Delta GetNetworkTimeout(QuicConnection* connection);
58
59   static bool IsSavedForRetransmission(
60       QuicConnection* connection,
61       QuicPacketSequenceNumber sequence_number);
62
63   static bool IsRetransmission(QuicConnection* connection,
64                                QuicPacketSequenceNumber sequence_number);
65
66   static QuicPacketEntropyHash GetSentEntropyHash(
67       QuicConnection* connection,
68       QuicPacketSequenceNumber sequence_number);
69
70   static bool IsValidEntropy(QuicConnection* connection,
71                              QuicPacketSequenceNumber largest_observed,
72                              const SequenceNumberSet& missing_packets,
73                              QuicPacketEntropyHash entropy_hash);
74
75   static QuicPacketEntropyHash ReceivedEntropyHash(
76       QuicConnection* connection,
77       QuicPacketSequenceNumber sequence_number);
78
79   static bool IsServer(QuicConnection* connection);
80
81   static void SetIsServer(QuicConnection* connection, bool is_server);
82
83   static void SetSelfAddress(QuicConnection* connection,
84                              const IPEndPoint& self_address);
85
86   static void SetPeerAddress(QuicConnection* connection,
87                              const IPEndPoint& peer_address);
88
89   static void SwapCrypters(QuicConnection* connection, QuicFramer* framer);
90
91   static QuicConnectionHelperInterface* GetHelper(QuicConnection* connection);
92
93   static QuicFramer* GetFramer(QuicConnection* connection);
94
95   // Set last_header_->fec_group = fec_group and return connection->GetFecGroup
96   static QuicFecGroup* GetFecGroup(QuicConnection* connection, int fec_group);
97
98   static QuicAlarm* GetAckAlarm(QuicConnection* connection);
99   static QuicAlarm* GetPingAlarm(QuicConnection* connection);
100   static QuicAlarm* GetResumeWritesAlarm(QuicConnection* connection);
101   static QuicAlarm* GetRetransmissionAlarm(QuicConnection* connection);
102   static QuicAlarm* GetSendAlarm(QuicConnection* connection);
103   static QuicAlarm* GetTimeoutAlarm(QuicConnection* connection);
104
105   static QuicPacketWriter* GetWriter(QuicConnection* connection);
106   static void SetWriter(QuicConnection* connection, QuicPacketWriter* writer);
107   static void CloseConnection(QuicConnection* connection);
108   static QuicEncryptedPacket* GetConnectionClosePacket(
109       QuicConnection* connection);
110
111  private:
112   DISALLOW_COPY_AND_ASSIGN(QuicConnectionPeer);
113 };
114
115 }  // namespace test
116
117 }  // namespace net
118
119 #endif  // NET_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_