| 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 (Tx txid)
- nkTxChannelsVar :: TxChannelsVar m NtNAddr txid (Tx txid)
- nkTxMempoolSem :: TxMempoolSem m
- nkSharedTxStateVar :: SharedTxStateVar m NtNAddr txid (Tx txid)
- newNodeKernel :: (MonadSTM m, MonadMVar m, RandomGen rng, 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), MonadMVar m, HasFullHeader block, RandomGen seed, Eq 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 :: (MonadSTM m, MonadMVar m, RandomGen rng, 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), MonadMVar m, HasFullHeader block, RandomGen seed, Eq 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 # | |