ouroboros-network:ouroboros-network-tests-lib
Safe HaskellNone
LanguageHaskell2010

Test.Ouroboros.Network.Diffusion.Node.Kernel

Description

Node kernel which does chain selection and block production.

Synopsis

Common types

type NtNAddr = TestAddress NtNAddr_ Source #

data NtNAddr_ Source #

Node-to-node address type.

Instances

Instances details
Arbitrary NtNAddr_ Source # 
Instance details

Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel

NFData NtNAddr_ Source # 
Instance details

Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel

Methods

rnf :: NtNAddr_ -> () #

Generic NtNAddr_ Source # 
Instance details

Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel

Associated Types

type Rep NtNAddr_ 
Instance details

Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel

type Rep NtNAddr_ = D1 ('MetaData "NtNAddr_" "Test.Ouroboros.Network.Diffusion.Node.Kernel" "ouroboros-network-0.23.0.0-inplace-ouroboros-network-tests-lib" 'False) (C1 ('MetaCons "EphemeralIPv4Addr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural)) :+: (C1 ('MetaCons "EphemeralIPv6Addr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural)) :+: C1 ('MetaCons "IPAddr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IP) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PortNumber))))

Methods

from :: NtNAddr_ -> Rep NtNAddr_ x #

to :: Rep NtNAddr_ x -> NtNAddr_ #

Show NtNAddr_ Source # 
Instance details

Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel

Eq NtNAddr_ Source # 
Instance details

Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel

Ord NtNAddr_ Source # 
Instance details

Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel

Hashable NtNAddr_ Source # 
Instance details

Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel

Methods

hashWithSalt :: Int -> NtNAddr_ -> Int #

hash :: NtNAddr_ -> Int #

GlobalAddressScheme NtNAddr_ Source # 
Instance details

Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel

Methods

getAddressType :: TestAddress NtNAddr_ -> AddressType

ephemeralAddress :: AddressType -> Natural -> TestAddress NtNAddr_

type Rep NtNAddr_ Source # 
Instance details

Defined in Test.Ouroboros.Network.Diffusion.Node.Kernel

type Rep NtNAddr_ = D1 ('MetaData "NtNAddr_" "Test.Ouroboros.Network.Diffusion.Node.Kernel" "ouroboros-network-0.23.0.0-inplace-ouroboros-network-tests-lib" 'False) (C1 ('MetaCons "EphemeralIPv4Addr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural)) :+: (C1 ('MetaCons "EphemeralIPv6Addr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural)) :+: C1 ('MetaCons "IPAddr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IP) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PortNumber))))

ppNtNConnId :: ConnectionId NtNAddr -> String Source #

type NtNVersion = UnversionedProtocol Source #

type NtCAddr = TestAddress Int Source #

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.

withNodeKernelThread Source #

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.