module Ouroboros.Network.TxSubmission.Mempool.Reader
( TxSubmissionMempoolReader (..)
, MempoolSnapshot (..)
, mapMempoolSnapshot
, mapTxSubmissionMempoolReader
) where
import Control.Monad.Class.MonadSTM (MonadSTM, STM)
import Ouroboros.Network.Protocol.TxSubmission2.Client (TxSizeInBytes)
data TxSubmissionMempoolReader txid tx idx m =
TxSubmissionMempoolReader {
TxSubmissionMempoolReader txid tx idx m
-> STM m (MempoolSnapshot txid tx idx)
mempoolGetSnapshot :: STM m (MempoolSnapshot txid tx idx),
TxSubmissionMempoolReader txid tx idx m -> idx
mempoolZeroIdx :: idx
}
mapTxSubmissionMempoolReader ::
MonadSTM m
=> (tx -> tx')
-> TxSubmissionMempoolReader txid tx idx m
-> TxSubmissionMempoolReader txid tx' idx m
mapTxSubmissionMempoolReader :: (tx -> tx')
-> TxSubmissionMempoolReader txid tx idx m
-> TxSubmissionMempoolReader txid tx' idx m
mapTxSubmissionMempoolReader tx -> tx'
f TxSubmissionMempoolReader txid tx idx m
rdr =
TxSubmissionMempoolReader txid tx idx m
rdr {
mempoolGetSnapshot :: STM m (MempoolSnapshot txid tx' idx)
mempoolGetSnapshot = (tx -> tx')
-> MempoolSnapshot txid tx idx -> MempoolSnapshot txid tx' idx
forall tx tx' txid idx.
(tx -> tx')
-> MempoolSnapshot txid tx idx -> MempoolSnapshot txid tx' idx
mapMempoolSnapshot tx -> tx'
f (MempoolSnapshot txid tx idx -> MempoolSnapshot txid tx' idx)
-> STM m (MempoolSnapshot txid tx idx)
-> STM m (MempoolSnapshot txid tx' idx)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> TxSubmissionMempoolReader txid tx idx m
-> STM m (MempoolSnapshot txid tx idx)
forall txid tx idx (m :: * -> *).
TxSubmissionMempoolReader txid tx idx m
-> STM m (MempoolSnapshot txid tx idx)
mempoolGetSnapshot TxSubmissionMempoolReader txid tx idx m
rdr
}
data MempoolSnapshot txid tx idx =
MempoolSnapshot {
MempoolSnapshot txid tx idx -> idx -> [(txid, idx, TxSizeInBytes)]
mempoolTxIdsAfter :: idx -> [(txid, idx, TxSizeInBytes)],
MempoolSnapshot txid tx idx -> idx -> Maybe tx
mempoolLookupTx :: idx -> Maybe tx,
MempoolSnapshot txid tx idx -> txid -> Bool
mempoolHasTx :: txid -> Bool
}
mapMempoolSnapshot ::
(tx -> tx')
-> MempoolSnapshot txid tx idx
-> MempoolSnapshot txid tx' idx
mapMempoolSnapshot :: (tx -> tx')
-> MempoolSnapshot txid tx idx -> MempoolSnapshot txid tx' idx
mapMempoolSnapshot tx -> tx'
f MempoolSnapshot txid tx idx
snap =
MempoolSnapshot txid tx idx
snap {
mempoolLookupTx :: idx -> Maybe tx'
mempoolLookupTx = (tx -> tx') -> Maybe tx -> Maybe tx'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap tx -> tx'
f (Maybe tx -> Maybe tx') -> (idx -> Maybe tx) -> idx -> Maybe tx'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MempoolSnapshot txid tx idx -> idx -> Maybe tx
forall txid tx idx. MempoolSnapshot txid tx idx -> idx -> Maybe tx
mempoolLookupTx MempoolSnapshot txid tx idx
snap
}