#include "net/dcsctp/socket/transmission_control_block.h"
#include <algorithm>
#include <cstdint>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "absl/types/optional.h"
#include "api/units/time_delta.h"
#include "net/dcsctp/packet/chunk/data_chunk.h"
#include "net/dcsctp/packet/chunk/forward_tsn_chunk.h"
#include "net/dcsctp/packet/chunk/idata_chunk.h"
#include "net/dcsctp/packet/chunk/iforward_tsn_chunk.h"
#include "net/dcsctp/packet/chunk/reconfig_chunk.h"
#include "net/dcsctp/packet/chunk/sack_chunk.h"
#include "net/dcsctp/packet/sctp_packet.h"
#include "net/dcsctp/public/dcsctp_options.h"
#include "net/dcsctp/public/types.h"
#include "net/dcsctp/rx/data_tracker.h"
#include "net/dcsctp/rx/reassembly_queue.h"
#include "net/dcsctp/socket/capabilities.h"
#include "net/dcsctp/socket/stream_reset_handler.h"
#include "net/dcsctp/timer/timer.h"
#include "net/dcsctp/tx/retransmission_queue.h"
#include "net/dcsctp/tx/retransmission_timeout.h"
#include "rtc_base/logging.h"
#include "rtc_base/strings/string_builder.h"
namespace dcsctp {
TimeDelta;
Timestamp;
TransmissionControlBlock::TransmissionControlBlock(
TimerManager& timer_manager,
absl::string_view log_prefix,
const DcSctpOptions& options,
const Capabilities& capabilities,
DcSctpSocketCallbacks& callbacks,
SendQueue& send_queue,
VerificationTag my_verification_tag,
TSN my_initial_tsn,
VerificationTag peer_verification_tag,
TSN peer_initial_tsn,
size_t a_rwnd,
TieTag tie_tag,
PacketSender& packet_sender,
std::function<bool()> is_connection_established)
: … { … }
void TransmissionControlBlock::ObserveRTT(TimeDelta rtt) { … }
TimeDelta TransmissionControlBlock::OnRtxTimerExpiry() { … }
TimeDelta TransmissionControlBlock::OnDelayedAckTimerExpiry() { … }
void TransmissionControlBlock::MaybeSendSack() { … }
void TransmissionControlBlock::MaybeSendForwardTsn(SctpPacket::Builder& builder,
Timestamp now) { … }
void TransmissionControlBlock::MaybeSendFastRetransmit() { … }
void TransmissionControlBlock::SendBufferedPackets(SctpPacket::Builder& builder,
Timestamp now) { … }
std::string TransmissionControlBlock::ToString() const { … }
HandoverReadinessStatus TransmissionControlBlock::GetHandoverReadiness() const { … }
void TransmissionControlBlock::AddHandoverState(
DcSctpSocketHandoverState& state) { … }
void TransmissionControlBlock::RestoreFromState(
const DcSctpSocketHandoverState& state) { … }
}