ouroboros-network-framework-0.1.0.1
Safe Haskell None
Language Haskell2010

Ouroboros.Network.Subscription.Ip

Description

IP subscription worker implentation.

Synopsis

Documentation

ipSubscriptionWorker :: forall a. Snocket IO Socket SockAddr -> Tracer IO ( WithIPList ( SubscriptionTrace SockAddr )) -> Tracer IO ( WithAddr SockAddr ErrorPolicyTrace ) -> NetworkMutableState SockAddr -> IPSubscriptionParams a -> ( Socket -> IO a) -> IO Void Source #

Spawns a subscription worker which will attempt to keep the specified number of connections (Valency) active towards the list of IP addresses given in IPSubscriptionTarget.

data ErrorPolicyTrace Source #

Trace data for error policies

Constructors

ErrorPolicySuspendPeer ( Maybe (ConnectionOrApplicationExceptionTrace SomeException )) DiffTime DiffTime

suspending peer with a given exception until

ErrorPolicySuspendConsumer ( Maybe (ConnectionOrApplicationExceptionTrace SomeException )) DiffTime

suspending consumer until

ErrorPolicyLocalNodeError (ConnectionOrApplicationExceptionTrace SomeException )

caught a local exception

ErrorPolicyResumePeer

resume a peer (both consumer and producer)

ErrorPolicyKeepSuspended

consumer was suspended until producer will resume

ErrorPolicyResumeConsumer

resume consumer

ErrorPolicyResumeProducer

resume producer

ErrorPolicyUnhandledApplicationException SomeException

an application throwed an exception, which was not handled by any ErrorPolicy .

ErrorPolicyUnhandledConnectionException SomeException

connect throwed an exception, which was not handled by any ErrorPolicy .

ErrorPolicyAcceptException IOException

accept throwed an exception

PeerState STM transactions

type BeforeConnect m s addr = Time -> addr -> s -> STM m ( ConnectDecision s) Source #

Check state before connecting to a remote peer. We will connect only if it retuns True .

beforeConnectTx :: forall m addr. ( MonadSTM m, Ord addr) => BeforeConnect m ( PeerStates m addr) addr Source #

BeforeConnect callback: it updates peer state and return boolean value wheather to connect to it or not. If a peer hasn't been recorded in PeerStates , we add it and try to connect to it.

mainTx :: ( MonadThrow ( STM m), MonadSTM m) => Main m ( PeerStates m addr) Void Source #

Main callback. It throws an exception when the state becomes ThrowException . This exception is thrown from the main thread.

Utilitity functions