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.
5 #ifndef NET_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_
6 #define NET_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_
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"
16 struct QuicPacketHeader
;
18 class QuicCongestionManager
;
20 class QuicConnectionHelperInterface
;
21 class QuicConnectionVisitorInterface
;
24 class QuicPacketCreator
;
25 class QuicPacketWriter
;
26 class ReceiveAlgorithmInterface
;
27 class SendAlgorithmInterface
;
33 // Peer to make public a number of otherwise private QuicConnection methods.
34 class QuicConnectionPeer
{
36 static void SendAck(QuicConnection
* connection
);
38 static void SetReceiveAlgorithm(QuicConnection
* connection
,
39 ReceiveAlgorithmInterface
* receive_algorithm
);
41 static void SetSendAlgorithm(QuicConnection
* connection
,
42 SendAlgorithmInterface
* send_algorithm
);
44 static QuicAckFrame
* CreateAckFrame(QuicConnection
* connection
);
46 static QuicConnectionVisitorInterface
* GetVisitor(
47 QuicConnection
* connection
);
49 static QuicPacketCreator
* GetPacketCreator(QuicConnection
* connection
);
51 static QuicCongestionManager
* GetCongestionManager(
52 QuicConnection
* connection
);
54 static bool GetReceivedTruncatedAck(QuicConnection
* connection
);
56 static QuicTime::Delta
GetNetworkTimeout(QuicConnection
* connection
);
58 static bool IsSavedForRetransmission(
59 QuicConnection
* connection
,
60 QuicPacketSequenceNumber sequence_number
);
62 static size_t GetRetransmissionCount(
63 QuicConnection
* connection
,
64 QuicPacketSequenceNumber sequence_number
);
66 static QuicPacketEntropyHash
GetSentEntropyHash(
67 QuicConnection
* connection
,
68 QuicPacketSequenceNumber sequence_number
);
70 static bool IsValidEntropy(QuicConnection
* connection
,
71 QuicPacketSequenceNumber largest_observed
,
72 const SequenceNumberSet
& missing_packets
,
73 QuicPacketEntropyHash entropy_hash
);
75 static QuicPacketEntropyHash
ReceivedEntropyHash(
76 QuicConnection
* connection
,
77 QuicPacketSequenceNumber sequence_number
);
79 static bool IsWriteBlocked(QuicConnection
* connection
);
81 static void SetIsWriteBlocked(QuicConnection
* connection
, bool write_blocked
);
83 static bool IsServer(QuicConnection
* connection
);
85 static void SetIsServer(QuicConnection
* connection
, bool is_server
);
87 static void SetSelfAddress(QuicConnection
* connection
,
88 const IPEndPoint
& self_address
);
90 static void SetPeerAddress(QuicConnection
* connection
,
91 const IPEndPoint
& peer_address
);
93 static void SwapCrypters(QuicConnection
* connection
, QuicFramer
* framer
);
95 static QuicConnectionHelperInterface
* GetHelper(QuicConnection
* connection
);
97 static QuicFramer
* GetFramer(QuicConnection
* connection
);
99 // Set last_header_->fec_group = fec_group and return connection->GetFecGroup
100 static QuicFecGroup
* GetFecGroup(QuicConnection
* connection
, int fec_group
);
102 static QuicAlarm
* GetAckAlarm(QuicConnection
* connection
);
103 static QuicAlarm
* GetRetransmissionAlarm(QuicConnection
* connection
);
104 static QuicAlarm
* GetSendAlarm(QuicConnection
* connection
);
105 static QuicAlarm
* GetResumeWritesAlarm(QuicConnection
* connection
);
106 static QuicAlarm
* GetTimeoutAlarm(QuicConnection
* connection
);
108 static QuicPacketWriter
* GetWriter(QuicConnection
* connection
);
109 static void SetWriter(QuicConnection
* connection
, QuicTestWriter
* writer
);
112 DISALLOW_COPY_AND_ASSIGN(QuicConnectionPeer
);
118 #endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_PEER_H_