| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Tox.Transport.Reliability
Synopsis
- newtype SeqNum = SeqNum Word32
- data ReliablePacket = ReliablePacket {}
- data ReliabilityState = ReliabilityState {}
- initState :: ReliabilityState
- data PacketRequest = PacketRequest {
- prMissingDeltas :: [Word32]
- handleIncoming :: ReliablePacket -> ReliabilityState -> (ReliabilityState, [ByteString])
- createPacketRequest :: ReliabilityState -> Maybe PacketRequest
- extractDeliverable :: SeqNum -> Map SeqNum ByteString -> ([ByteString], Map SeqNum ByteString, SeqNum)
- createLossless :: ByteString -> ReliabilityState -> (ReliablePacket, ReliabilityState)
- handlePacketRequest :: PacketRequest -> ReliabilityState -> ([ReliablePacket], ReliabilityState)
Documentation
Sequence Number (32-bit with wrap-around).
Instances
| Enum SeqNum Source # | |
Defined in Tox.Transport.Reliability | |
| Eq SeqNum Source # | |
| Num SeqNum Source # | |
| Ord SeqNum Source # | Custom ordering for sequence numbers to handle rollover.
A sequence number |
| Show SeqNum Source # | |
| Binary SeqNum Source # | |
data ReliablePacket Source #
Header for reliable transport (lossy or lossless).
Constructors
| ReliablePacket | |
Fields
| |
Instances
| Eq ReliablePacket Source # | |
Defined in Tox.Transport.Reliability Methods (==) :: ReliablePacket -> ReliablePacket -> Bool # (/=) :: ReliablePacket -> ReliablePacket -> Bool # | |
| Show ReliablePacket Source # | |
Defined in Tox.Transport.Reliability Methods showsPrec :: Int -> ReliablePacket -> ShowS # show :: ReliablePacket -> String # showList :: [ReliablePacket] -> ShowS # | |
| Binary ReliablePacket Source # | |
Defined in Tox.Transport.Reliability Methods put :: ReliablePacket -> Put # get :: Get ReliablePacket # putList :: [ReliablePacket] -> Put # | |
data ReliabilityState Source #
State for the reliability layer.
Constructors
| ReliabilityState | |
Fields
| |
Instances
| Eq ReliabilityState Source # | |
Defined in Tox.Transport.Reliability Methods (==) :: ReliabilityState -> ReliabilityState -> Bool # (/=) :: ReliabilityState -> ReliabilityState -> Bool # | |
| Show ReliabilityState Source # | |
Defined in Tox.Transport.Reliability Methods showsPrec :: Int -> ReliabilityState -> ShowS # show :: ReliabilityState -> String # showList :: [ReliabilityState] -> ShowS # | |
initState :: ReliabilityState Source #
Initial state for a new connection.
data PacketRequest Source #
A request for missing packets.
Constructors
| PacketRequest | |
Fields
| |
Instances
| Eq PacketRequest Source # | |
Defined in Tox.Transport.Reliability Methods (==) :: PacketRequest -> PacketRequest -> Bool # (/=) :: PacketRequest -> PacketRequest -> Bool # | |
| Show PacketRequest Source # | |
Defined in Tox.Transport.Reliability Methods showsPrec :: Int -> PacketRequest -> ShowS # show :: PacketRequest -> String # showList :: [PacketRequest] -> ShowS # | |
| Binary PacketRequest Source # | |
Defined in Tox.Transport.Reliability | |
handleIncoming :: ReliablePacket -> ReliabilityState -> (ReliabilityState, [ByteString]) Source #
Process an incoming reliable packet. Returns the updated state and any newly deliverable payloads.
createPacketRequest :: ReliabilityState -> Maybe PacketRequest Source #
Generate a request for all currently missing packets in our recv window.
extractDeliverable :: SeqNum -> Map SeqNum ByteString -> ([ByteString], Map SeqNum ByteString, SeqNum) Source #
Pull contiguous packets from the recv window starting at next.
createLossless :: ByteString -> ReliabilityState -> (ReliablePacket, ReliabilityState) Source #
Create a new outgoing lossless packet.
handlePacketRequest :: PacketRequest -> ReliabilityState -> ([ReliablePacket], ReliabilityState) Source #
Process a packet request from the peer and identify packets to resend. Returns the updated state and the list of packets that should be resent.