module Relay.SenderHalf
( SenderHalf (..),
emptySender,
assign,
)
where
import Relay.Session (Nat)
newtype SenderHalf = SenderHalf
{ SenderHalf -> Nat
nextSeq :: Nat
}
deriving (Int -> SenderHalf -> ShowS
[SenderHalf] -> ShowS
SenderHalf -> String
(Int -> SenderHalf -> ShowS)
-> (SenderHalf -> String)
-> ([SenderHalf] -> ShowS)
-> Show SenderHalf
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SenderHalf -> ShowS
showsPrec :: Int -> SenderHalf -> ShowS
$cshow :: SenderHalf -> String
show :: SenderHalf -> String
$cshowList :: [SenderHalf] -> ShowS
showList :: [SenderHalf] -> ShowS
Show, SenderHalf -> SenderHalf -> Bool
(SenderHalf -> SenderHalf -> Bool)
-> (SenderHalf -> SenderHalf -> Bool) -> Eq SenderHalf
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SenderHalf -> SenderHalf -> Bool
== :: SenderHalf -> SenderHalf -> Bool
$c/= :: SenderHalf -> SenderHalf -> Bool
/= :: SenderHalf -> SenderHalf -> Bool
Eq)
emptySender :: SenderHalf
emptySender :: SenderHalf
emptySender = SenderHalf {nextSeq :: Nat
nextSeq = Nat
1}
assign :: SenderHalf -> (Nat, SenderHalf)
assign :: SenderHalf -> (Nat, SenderHalf)
assign SenderHalf
sh = (SenderHalf -> Nat
nextSeq SenderHalf
sh, SenderHalf
sh {nextSeq = nextSeq sh + 1})