mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-11-24 04:01:07 +03:00
Summary: As in title. We never use the clock template. (Note: this ignores all push blocking failures!) Reviewed By: hanidamlaj Differential Revision: D41626894 fbshipit-source-id: d0c5ce923ffae09d07c04dc9aae2aea09f730b8f
110 lines
3.4 KiB
C++
110 lines
3.4 KiB
C++
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <quic/QuicConstants.h>
|
|
#include <quic/codec/QuicPacketBuilder.h>
|
|
#include <quic/codec/Types.h>
|
|
#include <quic/state/StateData.h>
|
|
|
|
namespace quic {
|
|
|
|
void updateAckSendStateOnRecvPacket(
|
|
QuicConnectionStateBase& conn,
|
|
AckState& ackState,
|
|
uint64_t distanceFromExpectedPacketNum,
|
|
bool pktHasRetransmittableData,
|
|
bool pktHasCryptoData,
|
|
bool initPktNumSpace = false);
|
|
|
|
void updateAckStateOnAckTimeout(QuicConnectionStateBase& conn);
|
|
|
|
void updateAckSendStateOnSentPacketWithAcks(
|
|
QuicConnectionStateBase& conn,
|
|
AckState& ackState,
|
|
PacketNum largestAckScheduled);
|
|
|
|
void updateRtt(
|
|
QuicConnectionStateBase& conn,
|
|
const std::chrono::microseconds rttSample,
|
|
const std::chrono::microseconds ackDelay);
|
|
|
|
bool isConnectionPaced(const QuicConnectionStateBase& conn) noexcept;
|
|
|
|
AckState& getAckState(
|
|
QuicConnectionStateBase& conn,
|
|
PacketNumberSpace pnSpace) noexcept;
|
|
|
|
const AckState& getAckState(
|
|
const QuicConnectionStateBase& conn,
|
|
PacketNumberSpace pnSpace) noexcept;
|
|
|
|
AckStateVersion currentAckStateVersion(
|
|
const QuicConnectionStateBase& conn) noexcept;
|
|
|
|
PacketNum getNextPacketNum(
|
|
const QuicConnectionStateBase& conn,
|
|
PacketNumberSpace pnSpace) noexcept;
|
|
|
|
void increaseNextPacketNum(
|
|
QuicConnectionStateBase& conn,
|
|
PacketNumberSpace pnSpace) noexcept;
|
|
|
|
/**
|
|
* Update largestReceivedPacketNum in ackState with packetNum. Return the
|
|
* distance from the next packet number we expect to receive.
|
|
*/
|
|
uint64_t updateLargestReceivedPacketNum(
|
|
AckState& ackState,
|
|
PacketNum packetNum,
|
|
TimePoint receivedTime);
|
|
|
|
std::deque<OutstandingPacket>::iterator getNextOutstandingPacket(
|
|
QuicConnectionStateBase& conn,
|
|
PacketNumberSpace packetNumberSpace,
|
|
std::deque<OutstandingPacket>::iterator from);
|
|
std::deque<OutstandingPacket>::iterator getFirstOutstandingPacket(
|
|
QuicConnectionStateBase& conn,
|
|
PacketNumberSpace packetNumberSpace);
|
|
|
|
std::deque<OutstandingPacket>::reverse_iterator getLastOutstandingPacket(
|
|
QuicConnectionStateBase& conn,
|
|
PacketNumberSpace packetNumberSpace);
|
|
std::deque<OutstandingPacket>::reverse_iterator
|
|
getLastOutstandingPacketIncludingLost(
|
|
QuicConnectionStateBase& conn,
|
|
PacketNumberSpace packetNumberSpace);
|
|
|
|
bool hasReceivedPackets(const QuicConnectionStateBase& conn) noexcept;
|
|
|
|
bool hasReceivedPacketsAtLastCloseSent(
|
|
const QuicConnectionStateBase& conn) noexcept;
|
|
|
|
bool hasNotReceivedNewPacketsSinceLastCloseSent(
|
|
const QuicConnectionStateBase& conn) noexcept;
|
|
|
|
void updateLargestReceivedPacketsAtLastCloseSent(
|
|
QuicConnectionStateBase& conn) noexcept;
|
|
|
|
folly::Optional<TimePoint>& getLossTime(
|
|
QuicConnectionStateBase& conn,
|
|
PacketNumberSpace pnSpace) noexcept;
|
|
|
|
bool canSetLossTimerForAppData(const QuicConnectionStateBase& conn) noexcept;
|
|
|
|
std::pair<folly::Optional<TimePoint>, PacketNumberSpace> earliestLossTimer(
|
|
const QuicConnectionStateBase& conn) noexcept;
|
|
|
|
std::pair<folly::Optional<TimePoint>, PacketNumberSpace> earliestTimeAndSpace(
|
|
const EnumArray<PacketNumberSpace, folly::Optional<TimePoint>>& times,
|
|
bool considerAppData) noexcept;
|
|
|
|
uint64_t maximumConnectionIdsToIssue(const QuicConnectionStateBase& conn);
|
|
|
|
} // namespace quic
|