Safe Haskell | None |
---|---|
Language | Haskell2010 |
Ouroboros.Network.TxSubmission.Inbound.V2
Synopsis
- txSubmissionInboundV2 :: forall txid tx idx (m :: Type -> Type). (MonadDelay m, MonadThrow m, Ord txid) => Tracer m (TraceTxSubmissionInbound txid tx) -> TxSubmissionInitDelay -> TxSubmissionMempoolWriter txid tx idx m -> PeerTxAPI m txid tx -> TxSubmissionServerPipelined txid tx m ()
- withPeer :: forall tx peeraddr txid idx m a. (MonadMask m, MonadMVar m, MonadSTM m, MonadMonotonicTime m, Ord txid, Show txid, Typeable txid, Ord peeraddr, Show peeraddr) => Tracer m (TraceTxLogic peeraddr txid tx) -> TxChannelsVar m peeraddr txid tx -> TxMempoolSem m -> TxDecisionPolicy -> SharedTxStateVar m peeraddr txid tx -> TxSubmissionMempoolReader txid tx idx m -> TxSubmissionMempoolWriter txid tx idx m -> (tx -> SizeInBytes) -> peeraddr -> (PeerTxAPI m txid tx -> m a) -> m a
- data PeerTxAPI (m :: Type -> Type) txid tx
- module Ouroboros.Network.TxSubmission.Inbound.V2.Types
- type TxChannelsVar (m :: Type -> Type) peeraddr txid tx = StrictMVar m (TxChannels m peeraddr txid tx)
- newTxChannelsVar :: MonadMVar m => m (TxChannelsVar m peeraddr txid tx)
- data TxMempoolSem (m :: Type -> Type)
- newTxMempoolSem :: MonadSTM m => m (TxMempoolSem m)
- type SharedTxStateVar (m :: Type -> Type) peeraddr txid tx = StrictTVar m (SharedTxState peeraddr txid tx)
- newSharedTxStateVar :: MonadSTM m => StdGen -> m (SharedTxStateVar m peeraddr txid tx)
- data TxDecisionPolicy = TxDecisionPolicy {}
- defaultTxDecisionPolicy :: TxDecisionPolicy
TxSubmision Inbound client
txSubmissionInboundV2 :: forall txid tx idx (m :: Type -> Type). (MonadDelay m, MonadThrow m, Ord txid) => Tracer m (TraceTxSubmissionInbound txid tx) -> TxSubmissionInitDelay -> TxSubmissionMempoolWriter txid tx idx m -> PeerTxAPI m txid tx -> TxSubmissionServerPipelined txid tx m () Source #
A tx-submission inbound side (server, sic!).
The server blocks on receiving TxDecision
from the decision logic. If
there are tx's to download it pipelines two requests: first for tx's second
for txid's. If there are no tx's to download, it either sends a blocking or
non-blocking request for txid's.
PeerTxAPI
Arguments
:: forall tx peeraddr txid idx m a. (MonadMask m, MonadMVar m, MonadSTM m, MonadMonotonicTime m, Ord txid, Show txid, Typeable txid, Ord peeraddr, Show peeraddr) | |
=> Tracer m (TraceTxLogic peeraddr txid tx) | |
-> TxChannelsVar m peeraddr txid tx | |
-> TxMempoolSem m | |
-> TxDecisionPolicy | |
-> SharedTxStateVar m peeraddr txid tx | |
-> TxSubmissionMempoolReader txid tx idx m | |
-> TxSubmissionMempoolWriter txid tx idx m | |
-> (tx -> SizeInBytes) | |
-> peeraddr | |
-> (PeerTxAPI m txid tx -> m a) | callback which gives access to |
-> m a |
A bracket function which registers / de-registers a new peer in
SharedTxStateVar
and PeerTxStateVar
s, which exposes PeerTxStateAPI
.
PeerTxStateAPI
is only safe inside the withPeer
scope.
Supporting types
type TxChannelsVar (m :: Type -> Type) peeraddr txid tx = StrictMVar m (TxChannels m peeraddr txid tx) Source #
newTxChannelsVar :: MonadMVar m => m (TxChannelsVar m peeraddr txid tx) Source #
data TxMempoolSem (m :: Type -> Type) Source #
newTxMempoolSem :: MonadSTM m => m (TxMempoolSem m) Source #
type SharedTxStateVar (m :: Type -> Type) peeraddr txid tx = StrictTVar m (SharedTxState peeraddr txid tx) Source #
newSharedTxStateVar :: MonadSTM m => StdGen -> m (SharedTxStateVar m peeraddr txid tx) Source #
data TxDecisionPolicy Source #
Policy for making decisions
Constructors
TxDecisionPolicy | |
Fields
|
Instances
Show TxDecisionPolicy Source # | |
Defined in Ouroboros.Network.TxSubmission.Inbound.V2.Policy Methods showsPrec :: Int -> TxDecisionPolicy -> ShowS # show :: TxDecisionPolicy -> String # showList :: [TxDecisionPolicy] -> ShowS # |