| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_ | |
| #define QUICHE_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_ | |
| #include <cstddef> | |
| #include "absl/strings/string_view.h" | |
| #include "quiche/quic/core/quic_connection.h" | |
| #include "quiche/quic/core/quic_connection_id.h" | |
| #include "quiche/quic/core/quic_connection_stats.h" | |
| #include "quiche/quic/core/quic_packets.h" | |
| #include "quiche/quic/core/quic_types.h" | |
| #include "quiche/quic/platform/api/quic_socket_address.h" | |
| namespace quic { | |
| struct QuicPacketHeader; | |
| class QuicAlarm; | |
| class QuicConnectionHelperInterface; | |
| class QuicConnectionVisitorInterface; | |
| class QuicEncryptedPacket; | |
| class QuicFramer; | |
| class QuicPacketCreator; | |
| class QuicPacketWriter; | |
| class QuicSentPacketManager; | |
| class SendAlgorithmInterface; | |
| namespace test { | |
| // Peer to make public a number of otherwise private QuicConnection methods. | |
| class QuicConnectionPeer { | |
| public: | |
| QuicConnectionPeer() = delete; | |
| static void SetSendAlgorithm(QuicConnection* connection, | |
| SendAlgorithmInterface* send_algorithm); | |
| static void SetLossAlgorithm(QuicConnection* connection, | |
| LossDetectionInterface* loss_algorithm); | |
| static void PopulateStopWaitingFrame(QuicConnection* connection, | |
| QuicStopWaitingFrame* stop_waiting); | |
| static QuicPacketCreator* GetPacketCreator(QuicConnection* connection); | |
| static QuicSentPacketManager* GetSentPacketManager( | |
| QuicConnection* connection); | |
| static QuicTime::Delta GetNetworkTimeout(QuicConnection* connection); | |
| static QuicTime::Delta GetHandshakeTimeout(QuicConnection* connection); | |
| static QuicTime::Delta GetBandwidthUpdateTimeout(QuicConnection* connection); | |
| static void DisableBandwidthUpdate(QuicConnection* connection); | |
| static void SetPerspective(QuicConnection* connection, | |
| Perspective perspective); | |
| static void SetSelfAddress(QuicConnection* connection, | |
| const QuicSocketAddress& self_address); | |
| static void SetPeerAddress(QuicConnection* connection, | |
| const QuicSocketAddress& peer_address); | |
| static void SetDirectPeerAddress( | |
| QuicConnection* connection, const QuicSocketAddress& direct_peer_address); | |
| static void SetEffectivePeerAddress( | |
| QuicConnection* connection, | |
| const QuicSocketAddress& effective_peer_address); | |
| static void SwapCrypters(QuicConnection* connection, QuicFramer* framer); | |
| static void SetCurrentPacket(QuicConnection* connection, | |
| absl::string_view current_packet); | |
| static QuicConnectionHelperInterface* GetHelper(QuicConnection* connection); | |
| static QuicAlarmFactory* GetAlarmFactory(QuicConnection* connection); | |
| static QuicFramer* GetFramer(QuicConnection* connection); | |
| static QuicAlarm* GetAckAlarm(QuicConnection* connection); | |
| static QuicAlarm* GetPingAlarm(QuicConnection* connection); | |
| static QuicAlarm* GetRetransmissionAlarm(QuicConnection* connection); | |
| static QuicAlarm* GetSendAlarm(QuicConnection* connection); | |
| static QuicAlarm* GetMtuDiscoveryAlarm(QuicConnection* connection); | |
| static QuicAlarm* GetProcessUndecryptablePacketsAlarm( | |
| QuicConnection* connection); | |
| static QuicAlarm* GetDiscardPreviousOneRttKeysAlarm( | |
| QuicConnection* connection); | |
| static QuicAlarm* GetDiscardZeroRttDecryptionKeysAlarm( | |
| QuicConnection* connection); | |
| static QuicAlarm* GetRetirePeerIssuedConnectionIdAlarm( | |
| QuicConnection* connection); | |
| static QuicAlarm* GetRetireSelfIssuedConnectionIdAlarm( | |
| QuicConnection* connection); | |
| static QuicPacketWriter* GetWriter(QuicConnection* connection); | |
| // If |owns_writer| is true, takes ownership of |writer|. | |
| static void SetWriter(QuicConnection* connection, QuicPacketWriter* writer, | |
| bool owns_writer); | |
| static void TearDownLocalConnectionState(QuicConnection* connection); | |
| static QuicEncryptedPacket* GetConnectionClosePacket( | |
| QuicConnection* connection); | |
| static QuicPacketHeader* GetLastHeader(QuicConnection* connection); | |
| static QuicConnectionStats* GetStats(QuicConnection* connection); | |
| static QuicPacketCount GetPacketsBetweenMtuProbes(QuicConnection* connection); | |
| static void ReInitializeMtuDiscoverer( | |
| QuicConnection* connection, QuicPacketCount packets_between_probes_base, | |
| QuicPacketNumber next_probe_at); | |
| static void SetAckDecimationDelay(QuicConnection* connection, | |
| float ack_decimation_delay); | |
| static bool HasRetransmittableFrames(QuicConnection* connection, | |
| uint64_t packet_number); | |
| static bool GetNoStopWaitingFrames(QuicConnection* connection); | |
| static void SetNoStopWaitingFrames(QuicConnection* connection, | |
| bool no_stop_waiting_frames); | |
| static void SetMaxTrackedPackets(QuicConnection* connection, | |
| QuicPacketCount max_tracked_packets); | |
| static void SetNegotiatedVersion(QuicConnection* connection); | |
| static void SetMaxConsecutiveNumPacketsWithNoRetransmittableFrames( | |
| QuicConnection* connection, size_t new_value); | |
| static bool SupportsReleaseTime(QuicConnection* connection); | |
| static QuicConnection::PacketContent GetCurrentPacketContent( | |
| QuicConnection* connection); | |
| static void AddBytesReceived(QuicConnection* connection, size_t length); | |
| static void SetAddressValidated(QuicConnection* connection); | |
| static void SendConnectionClosePacket(QuicConnection* connection, | |
| QuicIetfTransportErrorCodes ietf_error, | |
| QuicErrorCode error, | |
| const std::string& details); | |
| static size_t GetNumEncryptionLevels(QuicConnection* connection); | |
| static QuicNetworkBlackholeDetector& GetBlackholeDetector( | |
| QuicConnection* connection); | |
| static QuicAlarm* GetBlackholeDetectorAlarm(QuicConnection* connection); | |
| static QuicTime GetPathDegradingDeadline(QuicConnection* connection); | |
| static QuicTime GetBlackholeDetectionDeadline(QuicConnection* connection); | |
| static QuicTime GetPathMtuReductionDetectionDeadline( | |
| QuicConnection* connection); | |
| static QuicAlarm* GetIdleNetworkDetectorAlarm(QuicConnection* connection); | |
| static QuicTime GetIdleNetworkDeadline(QuicConnection* connection); | |
| static QuicIdleNetworkDetector& GetIdleNetworkDetector( | |
| QuicConnection* connection); | |
| static void SetServerConnectionId( | |
| QuicConnection* connection, const QuicConnectionId& server_connection_id); | |
| static size_t NumUndecryptablePackets(QuicConnection* connection); | |
| static void SetConnectionClose(QuicConnection* connection); | |
| static void SendPing(QuicConnection* connection); | |
| static void SetLastPacketDestinationAddress(QuicConnection* connection, | |
| const QuicSocketAddress& address); | |
| static QuicPathValidator* path_validator(QuicConnection* connection); | |
| static QuicByteCount BytesReceivedOnDefaultPath(QuicConnection* connection); | |
| static QuicByteCount BytesSentOnAlternativePath(QuicConnection* connection); | |
| static QuicByteCount BytesReceivedOnAlternativePath( | |
| QuicConnection* connection); | |
| static QuicConnectionId GetClientConnectionIdOnAlternativePath( | |
| const QuicConnection* connection); | |
| static QuicConnectionId GetServerConnectionIdOnAlternativePath( | |
| const QuicConnection* connection); | |
| static bool IsAlternativePath(QuicConnection* connection, | |
| const QuicSocketAddress& self_address, | |
| const QuicSocketAddress& peer_address); | |
| static bool IsAlternativePathValidated(QuicConnection* connection); | |
| static QuicByteCount BytesReceivedBeforeAddressValidation( | |
| QuicConnection* connection); | |
| static void ResetPeerIssuedConnectionIdManager(QuicConnection* connection); | |
| static QuicConnection::PathState* GetDefaultPath(QuicConnection* connection); | |
| static QuicConnection::PathState* GetAlternativePath( | |
| QuicConnection* connection); | |
| static void RetirePeerIssuedConnectionIdsNoLongerOnPath( | |
| QuicConnection* connection); | |
| static bool HasUnusedPeerIssuedConnectionId(const QuicConnection* connection); | |
| static bool HasSelfIssuedConnectionIdToConsume( | |
| const QuicConnection* connection); | |
| static QuicSelfIssuedConnectionIdManager* GetSelfIssuedConnectionIdManager( | |
| QuicConnection* connection); | |
| static std::unique_ptr<QuicSelfIssuedConnectionIdManager> | |
| MakeSelfIssuedConnectionIdManager(QuicConnection* connection); | |
| static void SetLastDecryptedLevel(QuicConnection* connection, | |
| EncryptionLevel level); | |
| static QuicCoalescedPacket& GetCoalescedPacket(QuicConnection* connection); | |
| static void FlushCoalescedPacket(QuicConnection* connection); | |
| static QuicAlarm* GetMultiPortProbingAlarm(QuicConnection* connection); | |
| }; | |
| } // namespace test | |
| } // namespace quic | |
| #endif // QUICHE_QUIC_TEST_TOOLS_QUIC_CONNECTION_PEER_H_ |