Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
The type of the chain synchronisation protocol.
Since we are using a typed protocol framework this is in some sense the definition of the protocol: what is allowed and what is not allowed.
Synopsis
- data ChainSync header point tip where
- StIdle ∷ ChainSync header point tip
- StNext ∷ StNextKind → ChainSync header point tip
- StIntersect ∷ ChainSync header point tip
- StDone ∷ ChainSync header point tip
- data StNextKind where
- data TokNextKind (k ∷ StNextKind) where
Documentation
data ChainSync header point tip where Source #
A kind to identify our protocol, and the types of the states in the state transition diagram of the protocol.
StIdle ∷ ChainSync header point tip | Both client and server are idle. The client can send a request and the server is waiting for a request. |
StNext ∷ StNextKind → ChainSync header point tip | The client has sent a next update request. The client is now waiting for a response, and the server is busy getting ready to send a response. There are two possibilities here, since the server can send a reply immediately or it can send an initial await message followed later by the normal reply. |
StIntersect ∷ ChainSync header point tip | The client has sent an intersection request. The client is now waiting for a response, and the server is busy getting ready to send a response. |
StDone ∷ ChainSync header point tip | Both the client and server are in the terminal state. They're done. |
Instances
(ShowProxy header, ShowProxy tip) ⇒ ShowProxy (ChainSync header point tip ∷ Type) Source # | |
Show (ClientHasAgency st) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type showsPrec ∷ Int → ClientHasAgency st → ShowS # show ∷ ClientHasAgency st → String # showList ∷ [ClientHasAgency st] → ShowS # | |
Show (ServerHasAgency st) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type showsPrec ∷ Int → ServerHasAgency st → ShowS # show ∷ ServerHasAgency st → String # showList ∷ [ServerHasAgency st] → ShowS # | |
NFData (ClientHasAgency st) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type rnf ∷ ClientHasAgency st → () # | |
NFData (NobodyHasAgency st) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type rnf ∷ NobodyHasAgency st → () # | |
NFData (ServerHasAgency st) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type rnf ∷ ServerHasAgency st → () # | |
(Show header, Show point, Show tip) ⇒ Show (Message (ChainSync header point tip) from to) Source # | |
(NFData header, NFData point, NFData tip) ⇒ NFData (Message (ChainSync header point tip) from to) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type | |
NFData (PeerHasAgency pr st) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type rnf ∷ PeerHasAgency pr st → () # | |
Protocol (ChainSync header point tip) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type data Message (ChainSync header point tip) st st' Source # data ClientHasAgency st Source # data ServerHasAgency st Source # data NobodyHasAgency st Source # exclusionLemma_ClientAndServerHaveAgency ∷ ∀ (st ∷ ChainSync header point tip). ClientHasAgency st → ServerHasAgency st → Void Source # exclusionLemma_NobodyAndClientHaveAgency ∷ ∀ (st ∷ ChainSync header point tip). NobodyHasAgency st → ClientHasAgency st → Void Source # exclusionLemma_NobodyAndServerHaveAgency ∷ ∀ (st ∷ ChainSync header point tip). NobodyHasAgency st → ServerHasAgency st → Void Source # | |
data ClientHasAgency (st ∷ ChainSync header point tip) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type data ClientHasAgency (st ∷ ChainSync header point tip) where
| |
data Message (ChainSync header point tip) (from ∷ ChainSync header point tip) (to ∷ ChainSync header point tip) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type data Message (ChainSync header point tip) (from ∷ ChainSync header point tip) (to ∷ ChainSync header point tip) where
| |
data NobodyHasAgency (st ∷ ChainSync header point tip) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type data NobodyHasAgency (st ∷ ChainSync header point tip) where
| |
data ServerHasAgency (st ∷ ChainSync header point tip) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type data ServerHasAgency (st ∷ ChainSync header point tip) where
|
data StNextKind where Source #
Sub-cases of the StNext
state. This is needed since the server can
either send one reply back, or two.
StCanAwait ∷ StNextKind | The server can reply or send an await msg. |
StMustReply ∷ StNextKind | The server must now reply, having already sent an await message. |
data TokNextKind (k ∷ StNextKind) where Source #
Instances
NFData (TokNextKind k) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type rnf ∷ TokNextKind k → () # |