| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Network.Protocol.ChainSync.Type
Description
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 :: forall header point tip. ChainSync header point tip
- StNext :: forall header point tip. StNextKind -> ChainSync header point tip
- StIntersect :: forall header point tip. ChainSync header point tip
- StDone :: forall header point tip. ChainSync header point tip
- data SingChainSync (k :: ChainSync header point tip) where
- SingIdle :: forall {header} {point} {tip}. SingChainSync ('StIdle :: ChainSync header point tip)
- SingNext :: forall {header} {point} {tip} (k1 :: StNextKind). SingNextKind k1 -> SingChainSync ('StNext k1 :: ChainSync header point tip)
- SingIntersect :: forall {header} {point} {tip}. SingChainSync ('StIntersect :: ChainSync header point tip)
- SingDone :: forall {header} {point} {tip}. SingChainSync ('StDone :: ChainSync header point tip)
- data StNextKind where
- data SingNextKind (k :: 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.
Constructors
| StIdle :: forall header point tip. 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 :: forall header point tip. 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 :: forall header point tip. 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 :: forall header point tip. 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 # | |||||
Defined in Ouroboros.Network.Protocol.ChainSync.Type | |||||
| (NFData header, NFData point, NFData tip) => NFData (Message (ChainSync header point tip) from to) 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 Associated Types
| |||||
| StateTokenI ('StDone :: ChainSync header point tip) Source # | |||||
Defined in Ouroboros.Network.Protocol.ChainSync.Type Methods stateToken :: StateToken ('StDone :: ChainSync header point tip) # | |||||
| StateTokenI ('StIdle :: ChainSync header point tip) Source # | |||||
Defined in Ouroboros.Network.Protocol.ChainSync.Type Methods stateToken :: StateToken ('StIdle :: ChainSync header point tip) # | |||||
| StateTokenI ('StIntersect :: ChainSync header point tip) Source # | |||||
Defined in Ouroboros.Network.Protocol.ChainSync.Type Methods stateToken :: StateToken ('StIntersect :: ChainSync header point tip) # | |||||
| SingI k => StateTokenI ('StNext k :: ChainSync header point tip) Source # | |||||
Defined in Ouroboros.Network.Protocol.ChainSync.Type Methods stateToken :: StateToken ('StNext k :: ChainSync header point tip) # | |||||
| 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
| |||||
| type StateToken Source # | |||||
Defined in Ouroboros.Network.Protocol.ChainSync.Type | |||||
| type StateAgency ('StDone :: ChainSync header point tip) Source # | |||||
Defined in Ouroboros.Network.Protocol.ChainSync.Type | |||||
| type StateAgency ('StIdle :: ChainSync header point tip) Source # | |||||
Defined in Ouroboros.Network.Protocol.ChainSync.Type | |||||
| type StateAgency ('StIntersect :: ChainSync header point tip) Source # | |||||
Defined in Ouroboros.Network.Protocol.ChainSync.Type | |||||
| type StateAgency ('StNext _1 :: ChainSync header point tip) Source # | |||||
Defined in Ouroboros.Network.Protocol.ChainSync.Type | |||||
data SingChainSync (k :: ChainSync header point tip) where Source #
Singletons for ChainSync state types.
Constructors
| SingIdle :: forall {header} {point} {tip}. SingChainSync ('StIdle :: ChainSync header point tip) | |
| SingNext :: forall {header} {point} {tip} (k1 :: StNextKind). SingNextKind k1 -> SingChainSync ('StNext k1 :: ChainSync header point tip) | |
| SingIntersect :: forall {header} {point} {tip}. SingChainSync ('StIntersect :: ChainSync header point tip) | |
| SingDone :: forall {header} {point} {tip}. SingChainSync ('StDone :: ChainSync header point tip) |
Instances
| Show (SingChainSync k) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type Methods showsPrec :: Int -> SingChainSync k -> ShowS # show :: SingChainSync k -> String # showList :: [SingChainSync k] -> ShowS # | |
data StNextKind where Source #
Sub-cases of the StNext state. This is needed since the server can
either send one reply back, or two.
Constructors
| StCanAwait :: StNextKind | The server can reply or send an await msg. |
| StMustReply :: StNextKind | The server must now reply, having already sent an await message. |
Instances
| SingI 'StCanAwait Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type Methods sing :: Sing 'StCanAwait # | |
| SingI 'StMustReply Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type Methods sing :: Sing 'StMustReply # | |
| type Sing Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type | |
data SingNextKind (k :: StNextKind) where Source #
Constructors
| SingCanAwait :: SingNextKind 'StCanAwait | |
| SingMustReply :: SingNextKind 'StMustReply |
Instances
| Show (SingNextKind k) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type Methods showsPrec :: Int -> SingNextKind k -> ShowS # show :: SingNextKind k -> String # showList :: [SingNextKind k] -> ShowS # | |
data TokNextKind (k :: StNextKind) where Source #
Constructors
| TokCanAwait :: TokNextKind 'StCanAwait | |
| TokMustReply :: TokNextKind 'StMustReply |
Instances
| NFData (TokNextKind k) Source # | |
Defined in Ouroboros.Network.Protocol.ChainSync.Type Methods rnf :: TokNextKind k -> () # | |