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 |
|
Show ( ServerHasAgency st) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type |
|
( Show header, Show point, Show tip) => Show ( Message ( ChainSync header point tip) from to) Source # | |
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 :: forall (st :: ChainSync header point tip). ClientHasAgency st -> ServerHasAgency st -> Void Source # exclusionLemma_NobodyAndClientHaveAgency :: forall (st :: ChainSync header point tip). NobodyHasAgency st -> ClientHasAgency st -> Void Source # exclusionLemma_NobodyAndServerHaveAgency :: forall (st :: ChainSync header point tip). NobodyHasAgency st -> ServerHasAgency st -> Void Source # |
|
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 ClientHasAgency (st :: ChainSync header point tip) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type
data
ClientHasAgency
(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 NobodyHasAgency (st :: ChainSync header point tip) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type
data
NobodyHasAgency
(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 #