ouroboros-network-framework-0.1.0.0
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Network.Driver.Limits

Description

Drivers for running Peers.

Synopsis

Limits

data ProtocolSizeLimits ps bytes Source #

Constructors

ProtocolSizeLimits 

Fields

data ProtocolTimeLimits ps Source #

Constructors

ProtocolTimeLimits 

Fields

data ProtocolLimitFailure where Source #

Constructors

ExceededSizeLimit ∷ ∀ (pr ∷ PeerRole) ps (st ∷ ps). (∀ (st' ∷ ps). Show (ClientHasAgency st'), ∀ (st' ∷ ps). Show (ServerHasAgency st'), ShowProxy ps) ⇒ PeerHasAgency pr st → ProtocolLimitFailure 
ExceededTimeLimit ∷ ∀ (pr ∷ PeerRole) ps (st ∷ ps). (∀ (st' ∷ ps). Show (ClientHasAgency st'), ∀ (st' ∷ ps). Show (ServerHasAgency st'), ShowProxy ps) ⇒ PeerHasAgency pr st → ProtocolLimitFailure 

Normal peers

runPeerWithLimits ∷ ∀ ps (st ∷ ps) pr failure bytes m a. (MonadAsync m, MonadFork m, MonadMask m, MonadThrow (STM m), MonadMonotonicTime m, MonadTimer m, ∀ (st' ∷ ps). Show (ClientHasAgency st'), ∀ (st' ∷ ps). Show (ServerHasAgency st'), ShowProxy ps, Show failure) ⇒ Tracer m (TraceSendRecv ps) → Codec ps failure m bytes → ProtocolSizeLimits ps bytes → ProtocolTimeLimits ps → Channel m bytes → Peer ps pr st m a → m (a, Maybe bytes) Source #

data TraceSendRecv ps where Source #

Structured Tracer output for runPeer and derivitives.

Constructors

TraceSendMsg ∷ AnyMessageAndAgency ps → TraceSendRecv ps 
TraceRecvMsg ∷ AnyMessageAndAgency ps → TraceSendRecv ps 

Instances

Instances details
Show (AnyMessageAndAgency ps) ⇒ Show (TraceSendRecv ps) Source # 
Instance details

Defined in Ouroboros.Network.Driver.Simple

Pipelined peers

runPipelinedPeerWithLimits ∷ ∀ ps (st ∷ ps) pr failure bytes m a. (MonadAsync m, MonadFork m, MonadMask m, MonadThrow (STM m), MonadMonotonicTime m, MonadTimer m, ∀ (st' ∷ ps). Show (ClientHasAgency st'), ∀ (st' ∷ ps). Show (ServerHasAgency st'), ShowProxy ps, Show failure) ⇒ Tracer m (TraceSendRecv ps) → Codec ps failure m bytes → ProtocolSizeLimits ps bytes → ProtocolTimeLimits ps → Channel m bytes → PeerPipelined ps pr st m a → m (a, Maybe bytes) Source #

Run a pipelined peer with the given channel via the given codec.

This runs the peer to completion (if the protocol allows for termination).

Unlike normal peers, running pipelined peers rely on concurrency, hence the MonadSTM constraint.

Driver utilities

driverWithLimits ∷ ∀ ps failure bytes m. (MonadThrow m, Show failure, ShowProxy ps, ∀ (st' ∷ ps). Show (ClientHasAgency st'), ∀ (st' ∷ ps). Show (ServerHasAgency st')) ⇒ Tracer m (TraceSendRecv ps) → TimeoutFn m → Codec ps failure m bytes → ProtocolSizeLimits ps bytes → ProtocolTimeLimits ps → Channel m bytes → Driver ps (Maybe bytes) m Source #