module Hydra.Network.Ouroboros.Type where
import Hydra.Prelude
import Network.TypedProtocol.Codec
import Network.TypedProtocol.Core
import Ouroboros.Consensus.Util (ShowProxy (..))
data FireForget msg where
StIdle :: FireForget msg
StDone :: FireForget msg
data SFireForget (st :: FireForget msg) where
SingIdle :: SFireForget StIdle
SingDone :: SFireForget StDone
deriving instance Show (SFireForget st)
instance StateTokenI StIdle where
stateToken :: StateToken 'StIdle
stateToken = StateToken 'StIdle
SFireForget 'StIdle
forall {k} {msg :: k}. SFireForget 'StIdle
SingIdle
instance StateTokenI StDone where
stateToken :: StateToken 'StDone
stateToken = StateToken 'StDone
SFireForget 'StDone
forall {k} {msg :: k}. SFireForget 'StDone
SingDone
instance ShowProxy (FireForget msg) where
showProxy :: Proxy (FireForget msg) -> String
showProxy Proxy (FireForget msg)
_ = String
"FireForget"
instance Protocol (FireForget msg) where
data Message (FireForget msg) from to where
MsgSend :: msg -> Message (FireForget msg) 'StIdle 'StIdle
MsgDone :: Message (FireForget msg) 'StIdle 'StDone
type StateAgency StIdle = ClientAgency
type StateAgency StDone = NobodyAgency
type StateToken = SFireForget
deriving stock instance Show msg => Show (Message (FireForget msg) from to)
deriving stock instance Eq msg => Eq (Message (FireForget msg) from to)