Safe Haskell | None |
---|---|
Language | Haskell2010 |
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 :: k) (tx :: k1) (slot :: k2) where
- StIdle :: forall {k} {k1} {k2} (txid :: k) (tx :: k1) (slot :: k2). LocalTxMonitor txid tx slot
- StAcquiring :: forall {k} {k1} {k2} (txid :: k) (tx :: k1) (slot :: k2). LocalTxMonitor txid tx slot
- StAcquired :: forall {k} {k1} {k2} (txid :: k) (tx :: k1) (slot :: k2). LocalTxMonitor txid tx slot
- StBusy :: forall {k} {k1} {k2} (txid :: k) (tx :: k1) (slot :: k2). StBusyKind -> LocalTxMonitor txid tx slot
- StDone :: forall {k} {k1} {k2} (txid :: k) (tx :: k1) (slot :: k2). LocalTxMonitor txid tx slot
- data StBusyKind where
- data MempoolSizeAndCapacity = MempoolSizeAndCapacity {
- capacityInBytes :: !Word32
- sizeInBytes :: !Word32
- numberOfTxs :: !Word32
- data TokBusyKind (k :: StBusyKind) where
Documentation
data LocalTxMonitor (txid :: k) (tx :: k1) (slot :: k2) 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.
StIdle :: forall {k} {k1} {k2} (txid :: k) (tx :: k1) (slot :: k2). LocalTxMonitor txid tx slot | The client has agency; it can request a transaction or terminate. There is no timeout in this state. |
StAcquiring :: forall {k} {k1} {k2} (txid :: k) (tx :: k1) (slot :: k2). LocalTxMonitor txid tx slot | The server has agency; it is capturing the latest mempool snapshot. |
StAcquired :: forall {k} {k1} {k2} (txid :: k) (tx :: k1) (slot :: k2). 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 :: forall {k} {k1} {k2} (txid :: k) (tx :: k1) (slot :: k2). StBusyKind -> LocalTxMonitor txid tx slot | The server has agency; It must respond, there's no timeout. |
StDone :: forall {k} {k1} {k2} (txid :: k) (tx :: k1) (slot :: k2). LocalTxMonitor txid tx slot | Nobody has agency. The terminal state. |
Instances
data StBusyKind where Source #
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.
MempoolSizeAndCapacity | |
|
Instances
data TokBusyKind (k :: StBusyKind) where Source #
TokNextTx :: TokBusyKind 'NextTx | |
TokHasTx :: TokBusyKind 'HasTx | |
TokGetSizes :: TokBusyKind 'GetSizes |
Instances
NFData (TokBusyKind k) Source # | |
Defined in Ouroboros.Network.Protocol.LocalTxMonitor.Type rnf :: TokBusyKind k -> () # |