1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file. 4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef NET_QUIC_TEST_TOOLS_QUIC_SENT_PACKET_MANAGER_PEER_H_ 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define NET_QUIC_TEST_TOOLS_QUIC_SENT_PACKET_MANAGER_PEER_H_ 7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "net/quic/quic_protocol.h" 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "net/quic/quic_sent_packet_manager.h" 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace net { 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class SendAlgorithmInterface; 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace test { 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class QuicSentPacketManagerPeer { 18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public: 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static void SetMaxTailLossProbes( 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) QuicSentPacketManager* sent_packet_manager, size_t max_tail_loss_probes); 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) static void SetSendAlgorithm(QuicSentPacketManager* sent_packet_manager, 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SendAlgorithmInterface* send_algorithm); 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 25e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch static const LossDetectionInterface* GetLossAlgorithm( 26e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch QuicSentPacketManager* sent_packet_manager); 27e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static const SendAlgorithmInterface* GetCongestionControlAlgorithm( 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const QuicSentPacketManager& sent_packet_manager); 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static void SetLossAlgorithm(QuicSentPacketManager* sent_packet_manager, 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) LossDetectionInterface* loss_detector); 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static RttStats* GetRttStats(QuicSentPacketManager* sent_packet_manager); 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) static size_t GetNackCount( 37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const QuicSentPacketManager* sent_packet_manager, 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) QuicPacketSequenceNumber sequence_number); 39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static size_t GetPendingRetransmissionCount( 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const QuicSentPacketManager* sent_packet_manager); 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static bool HasPendingPackets( 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const QuicSentPacketManager* sent_packet_manager); 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static QuicTime GetSentTime(const QuicSentPacketManager* sent_packet_manager, 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) QuicPacketSequenceNumber sequence_number); 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Returns true if |sequence_number| is a retransmission of a packet. 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) static bool IsRetransmission(QuicSentPacketManager* sent_packet_manager, 51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) QuicPacketSequenceNumber sequence_number); 52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) static void MarkForRetransmission(QuicSentPacketManager* sent_packet_manager, 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) QuicPacketSequenceNumber sequence_number, 55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TransmissionType transmission_type); 56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static QuicTime::Delta GetRetransmissionDelay( 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const QuicSentPacketManager* sent_packet_manager); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static bool HasUnackedCryptoPackets( 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const QuicSentPacketManager* sent_packet_manager); 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static size_t GetNumRetransmittablePackets( 64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const QuicSentPacketManager* sent_packet_manager); 65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 66010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static QuicByteCount GetBytesInFlight( 67010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const QuicSentPacketManager* sent_packet_manager); 68010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static QuicSentPacketManager::NetworkChangeVisitor* GetNetworkChangeVisitor( 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const QuicSentPacketManager* sent_packet_manager); 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static QuicSustainedBandwidthRecorder& GetBandwidthRecorder( 7303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) QuicSentPacketManager* sent_packet_manager); 7403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private: 76a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManagerPeer); 77a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}; 78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} // namespace test 80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} // namespace net 82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 83a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // NET_QUIC_TEST_TOOLS_QUIC_SENT_PACKET_MANAGER_PEER_H_ 84