toxcore-0.2.12: A Tox protocol implementation in Haskell
Safe HaskellNone
LanguageHaskell2010

Tox.Transport.Reliability

Synopsis

Documentation

newtype SeqNum Source #

Sequence Number (32-bit with wrap-around).

Constructors

SeqNum Word32 

Instances

Instances details
Enum SeqNum Source # 
Instance details

Defined in Tox.Transport.Reliability

Eq SeqNum Source # 
Instance details

Defined in Tox.Transport.Reliability

Methods

(==) :: SeqNum -> SeqNum -> Bool #

(/=) :: SeqNum -> SeqNum -> Bool #

Num SeqNum Source # 
Instance details

Defined in Tox.Transport.Reliability

Ord SeqNum Source #

Custom ordering for sequence numbers to handle rollover. A sequence number a is considered less than b if it is within the first half of the 32-bit space following a (circularly).

Instance details

Defined in Tox.Transport.Reliability

Show SeqNum Source # 
Instance details

Defined in Tox.Transport.Reliability

Binary SeqNum Source # 
Instance details

Defined in Tox.Transport.Reliability

Methods

put :: SeqNum -> Put #

get :: Get SeqNum #

putList :: [SeqNum] -> Put #

data ReliablePacket Source #

Header for reliable transport (lossy or lossless).

Constructors

ReliablePacket 

Fields

data ReliabilityState Source #

State for the reliability layer.

Constructors

ReliabilityState 

Fields

initState :: ReliabilityState Source #

Initial state for a new connection.

data PacketRequest Source #

A request for missing packets.

Constructors

PacketRequest 

Fields

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.