ouroboros-network
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Network.TxSubmission.Inbound.V2

Synopsis

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

withPeer Source #

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 PeerTxStateAPI

-> m a 

A bracket function which registers / de-registers a new peer in SharedTxStateVar and PeerTxStateVars, which exposes PeerTxStateAPI. PeerTxStateAPI is only safe inside the withPeer scope.

data PeerTxAPI (m :: Type -> Type) txid tx Source #

API to access PeerTxState inside PeerTxStateVar.

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 #

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