# Functions
NewPacketList returns an initialized list.
NewReceivedPacketHandler creates a new receivedPacketHandler.
NewSentPacketHandler creates a new sentPacketHandler.
# Variables
ErrAckForSkippedPacket occurs when the client sent an ACK for a packet number that we intentionally skipped.
ErrDuplicateOrOutOfOrderAck occurs when a duplicate or an out-of-order ACK is received.
ErrDuplicatePacket occurres when a duplicate packet is received.
ErrPacketSmallerThanLastStopWaiting occurs when a packet arrives with a packet number smaller than the largest LeastUnacked of a StopWaitingFrame.
ErrTooManyTrackedSentPackets occurs when the sentPacketHandler has to keep track of too many packets.
# Structs
A Packet is a packet +gen linkedlist.
PacketElement is an element of a linked list.
PacketList represents a doubly linked list.
# Interfaces
ReceivedPacketHandler handles ACKs needed to send for incoming packets.
SentPacketHandler handles ACKs received for outgoing packets.