Safe Haskell | None |
---|---|
Language | Haskell2010 |
Ouroboros.Network.TxSubmission.Inbound.V2.Registry
Synopsis
- newtype TxChannels (m :: Type -> Type) peeraddr txid tx = TxChannels {
- txChannelMap :: Map peeraddr (StrictMVar m (TxDecision txid tx))
- type TxChannelsVar (m :: Type -> Type) peeraddr txid tx = StrictMVar m (TxChannels m peeraddr txid tx)
- data TxMempoolSem (m :: Type -> Type)
- type SharedTxStateVar (m :: Type -> Type) peeraddr txid tx = StrictTVar m (SharedTxState peeraddr txid tx)
- newSharedTxStateVar :: MonadSTM m => StdGen -> m (SharedTxStateVar m peeraddr txid tx)
- newTxChannelsVar :: MonadMVar m => m (TxChannelsVar m peeraddr txid tx)
- newTxMempoolSem :: MonadSTM m => m (TxMempoolSem m)
- data PeerTxAPI (m :: Type -> Type) txid tx = PeerTxAPI {
- readTxDecision :: m (TxDecision txid tx)
- handleReceivedTxIds :: NumTxIdsToReq -> StrictSeq txid -> Map txid SizeInBytes -> m ()
- handleReceivedTxs :: Map txid SizeInBytes -> Map txid tx -> m (Maybe TxSubmissionProtocolError)
- submitTxToMempool :: Tracer m (TraceTxSubmissionInbound txid tx) -> txid -> tx -> m ()
- decisionLogicThreads :: (MonadDelay m, MonadMVar m, MonadMask m, MonadAsync m, MonadFork m, Ord peeraddr, Ord txid, Hashable peeraddr) => Tracer m (TraceTxLogic peeraddr txid tx) -> Tracer m TxSubmissionCounters -> TxDecisionPolicy -> TxChannelsVar m peeraddr txid tx -> SharedTxStateVar m peeraddr txid tx -> m Void
- 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
Documentation
newtype TxChannels (m :: Type -> Type) peeraddr txid tx Source #
Communication channels between TxSubmission
client mini-protocol and
decision logic.
Constructors
TxChannels | |
Fields
|
type TxChannelsVar (m :: Type -> Type) peeraddr txid tx = StrictMVar m (TxChannels 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 #
newTxChannelsVar :: MonadMVar m => m (TxChannelsVar m peeraddr txid tx) Source #
newTxMempoolSem :: MonadSTM m => m (TxMempoolSem m) Source #
data PeerTxAPI (m :: Type -> Type) txid tx Source #
API to access PeerTxState
inside PeerTxStateVar
.
Constructors
PeerTxAPI | |
Fields
|
decisionLogicThreads :: (MonadDelay m, MonadMVar m, MonadMask m, MonadAsync m, MonadFork m, Ord peeraddr, Ord txid, Hashable peeraddr) => Tracer m (TraceTxLogic peeraddr txid tx) -> Tracer m TxSubmissionCounters -> TxDecisionPolicy -> TxChannelsVar m peeraddr txid tx -> SharedTxStateVar m peeraddr txid tx -> m Void Source #
Run decisionLogicThread
and drainRejectionThread
.
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.