| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Test.Ouroboros.Network.Diffusion.Node.Kernel
Contents
Description
Node kernel which does chain selection and block production.
Synopsis
- type NtNAddr = TestAddress NtNAddr_
- data NtNAddr_
- encodeNtNAddr :: NtNAddr -> Encoding
- decodeNtNAddr :: Decoder s NtNAddr
- ntnAddrToRelayAccessPoint :: NtNAddr -> Maybe RelayAccessPoint
- ppNtNAddr :: NtNAddr -> String
- ppNtNConnId :: ConnectionId NtNAddr -> String
- type NtNVersion = UnversionedProtocol
- data NtNVersionData = NtNVersionData {}
- type NtCAddr = TestAddress Int
- type NtCVersion = UnversionedProtocol
- type NtCVersionData = UnversionedProtocolData
- data BlockGeneratorArgs block s = BlockGeneratorArgs {
- bgaSlotDuration :: DiffTime
- bgaBlockGenerator :: s -> Anchor block -> SlotNo -> (Maybe block, s)
- bgaSeed :: s
- relayBlockGenerationArgs :: DiffTime -> seed -> BlockGeneratorArgs block seed
- randomBlockGenerationArgs :: DiffTime -> StdGen -> Int -> BlockGeneratorArgs Block StdGen
- data NodeKernel header block s txid (m :: Type -> Type) = NodeKernel {
- nkClientChains :: StrictTVar m (Map NtNAddr (StrictTVar m (Chain header)))
- nkChainProducerState :: StrictTVar m (ChainProducerState block)
- nkFetchClientRegistry :: FetchClientRegistry NtNAddr header block m
- nkPeerSharingRegistry :: PeerSharingRegistry NtNAddr m
- nkChainDB :: ChainDB block m
- nkPeerSharingAPI :: PeerSharingAPI NtNAddr s m
- nkPublicPeerSelectionVar :: StrictTVar m (PublicPeerSelectionState NtNAddr)
- nkMempool :: Mempool m txid (Tx txid)
- nkTxChannelsVar :: TxChannelsVar m NtNAddr txid (Tx txid)
- nkTxMempoolSem :: TxMempoolSem m
- nkSharedTxStateVar :: SharedTxStateVar m NtNAddr txid (Tx txid)
- newNodeKernel :: (MonadTraceSTM m, MonadLabelledSTM m, MonadMVar m, RandomGen rng, Ord txid, Eq txid) => rng -> Int -> [Tx txid] -> m (NodeKernel header block rng txid m)
- registerClientChains :: MonadSTM m => NodeKernel header block s txid m -> NtNAddr -> m (StrictTVar m (Chain header))
- unregisterClientChains :: MonadSTM m => NodeKernel header block s txid m -> NtNAddr -> m ()
- withNodeKernelThread :: forall block header m seed txid a. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadFork m, MonadThrow m, MonadThrow (STM m), MonadTraceSTM m, MonadLabelledSTM m, MonadMVar m, HasFullHeader block, RandomGen seed, Eq txid, Ord txid) => NtNAddr -> BlockGeneratorArgs block seed -> [Tx txid] -> (NodeKernel header block seed txid m -> Async m Void -> m a) -> m a
- data NodeKernelError = UnexpectedSlot !SlotNo !SlotNo
Common types
Node-to-node address type.
Constructors
| EphemeralIPv4Addr Natural | |
| EphemeralIPv6Addr Natural | |
| IPAddr IP PortNumber |
Instances
encodeNtNAddr :: NtNAddr -> Encoding Source #
decodeNtNAddr :: Decoder s NtNAddr Source #
ppNtNConnId :: ConnectionId NtNAddr -> String Source #
type NtNVersion = UnversionedProtocol Source #
data NtNVersionData Source #
Constructors
| NtNVersionData | |
Fields | |
Instances
| Show NtNVersionData Source # | |
Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel Methods showsPrec :: Int -> NtNVersionData -> ShowS # show :: NtNVersionData -> String # showList :: [NtNVersionData] -> ShowS # | |
| Acceptable NtNVersionData Source # | |
Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel Methods acceptableVersion :: NtNVersionData -> NtNVersionData -> Accept NtNVersionData | |
type NtCVersion = UnversionedProtocol Source #
type NtCVersionData = UnversionedProtocolData Source #
Node kernel
data BlockGeneratorArgs block s Source #
Constructors
| BlockGeneratorArgs | |
Fields
| |
relayBlockGenerationArgs :: DiffTime -> seed -> BlockGeneratorArgs block seed Source #
Do not generate blocks.
randomBlockGenerationArgs :: DiffTime -> StdGen -> Int -> BlockGeneratorArgs Block StdGen Source #
Generate a block according to given probability.
data NodeKernel header block s txid (m :: Type -> Type) Source #
Constructors
| NodeKernel | |
Fields
| |
newNodeKernel :: (MonadTraceSTM m, MonadLabelledSTM m, MonadMVar m, RandomGen rng, Ord txid, Eq txid) => rng -> Int -> [Tx txid] -> m (NodeKernel header block rng txid m) Source #
registerClientChains :: MonadSTM m => NodeKernel header block s txid m -> NtNAddr -> m (StrictTVar m (Chain header)) Source #
Register a new upstream chain-sync client.
unregisterClientChains :: MonadSTM m => NodeKernel header block s txid m -> NtNAddr -> m () Source #
Unregister an upstream chain-sync client.
Arguments
| :: forall block header m seed txid a. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadFork m, MonadThrow m, MonadThrow (STM m), MonadTraceSTM m, MonadLabelledSTM m, MonadMVar m, HasFullHeader block, RandomGen seed, Eq txid, Ord txid) | |
| => NtNAddr | just for naming a thread |
| -> BlockGeneratorArgs block seed | |
| -> [Tx txid] | |
| -> (NodeKernel header block seed txid m -> Async m Void -> m a) | The continuation which has a handle to the chain selection / block production thread. The thread might throw an exception. |
| -> m a |
Run chain selection / block production thread.
data NodeKernelError Source #
Node kernel erros.
Constructors
| UnexpectedSlot !SlotNo !SlotNo |
Instances
| Exception NodeKernelError Source # | |
Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel Methods toException :: NodeKernelError -> SomeException # fromException :: SomeException -> Maybe NodeKernelError # displayException :: NodeKernelError -> String # backtraceDesired :: NodeKernelError -> Bool # | |
| Show NodeKernelError Source # | |
Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel Methods showsPrec :: Int -> NodeKernelError -> ShowS # show :: NodeKernelError -> String # showList :: [NodeKernelError] -> ShowS # | |