Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ouroboros.Network.Protocol.LocalTxMonitor.Type
Description
The type of the local transaction monitoring protocol.
This is used by local clients (like wallets, explorers and CLI tools) to monitor the transactions passing through the mempool of a local node.
The protocol is stateful such that the server keeps track of the transactions already sent to the client.
START ⇓ ┌───────────────┐ ┌──────▶│ Idle │⇒ DONE │ └───┬───────────┘ │ │ │ Acquire │ │ ▼ │ ┌───────────────┐ Release │ │ Acquiring │ │ └───┬───────────┘ │ │ ▲ │ Acquired │ │ AwaitAcquire │ ▼ │ │ ┌───────────┴───┐ └───────┤ Acquired │ └───┬───────────┘ │ ▲ HasTx|NextTx|GetSizes │ │ Reply (HasTx|NextTx|GetSizes) ▼ │ ┌───────────┴───┐ │ Busy │ └───────────────┘
Synopsis
- data LocalTxMonitor txid tx slot where
- StIdle ∷ LocalTxMonitor txid tx slot
- StAcquiring ∷ LocalTxMonitor txid tx slot
- StAcquired ∷ LocalTxMonitor txid tx slot
- StBusy ∷ StBusyKind → LocalTxMonitor txid tx slot
- StDone ∷ LocalTxMonitor txid tx slot
- data StBusyKind where
- data MempoolSizeAndCapacity = MempoolSizeAndCapacity {}
- data TokBusyKind (k ∷ StBusyKind) where
Documentation
data LocalTxMonitor txid tx slot where Source #
The kind of the local transaction monitoring protocol, and the types of the states in the protocol state machine.
It is parametrised over the type of transactions.
Constructors
StIdle ∷ LocalTxMonitor txid tx slot | The client has agency; it can request a transaction or terminate. There is no timeout in this state. |
StAcquiring ∷ LocalTxMonitor txid tx slot | The server has agency; it is capturing the latest mempool snapshot. |
StAcquired ∷ LocalTxMonitor txid tx slot | The client has agency; The server is locked on a particular mempool snapshot. The client can now perform various requests on that snapshot, or acquire a new one, more recent. |
StBusy ∷ StBusyKind → LocalTxMonitor txid tx slot | The server has agency; It must respond, there's no timeout. |
StDone ∷ LocalTxMonitor txid tx slot | Nobody has agency. The terminal state. |
Instances
data StBusyKind where Source #
Constructors
NextTx ∷ StBusyKind | The server is busy fetching the next transaction from the mempool |
HasTx ∷ StBusyKind | The server is busy looking for the presence of a specific transaction in the mempool |
GetSizes ∷ StBusyKind | The server is busy looking for the current size and max capacity of the mempool |
data MempoolSizeAndCapacity Source #
Describes the MemPool sizes and capacity for a given snapshot.
Constructors
MempoolSizeAndCapacity | |
Fields
|
Instances
data TokBusyKind (k ∷ StBusyKind) where Source #
Constructors
TokNextTx ∷ TokBusyKind NextTx | |
TokHasTx ∷ TokBusyKind HasTx | |
TokGetSizes ∷ TokBusyKind GetSizes |
Instances
NFData (TokBusyKind k) Source # | |
Defined in Ouroboros.Network.Protocol.LocalTxMonitor.Type Methods rnf ∷ TokBusyKind k → () # |