Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ouroboros.Network.Driver.Limits
Description
Drivers for running Peer
s.
Synopsis
- data ProtocolSizeLimits ps bytes = ProtocolSizeLimits {
- sizeLimitForState ∷ ∀ (pr ∷ PeerRole) (st ∷ ps). PeerHasAgency pr st → Word
- dataSize ∷ bytes → Word
- data ProtocolTimeLimits ps = ProtocolTimeLimits {
- timeLimitForState ∷ ∀ (pr ∷ PeerRole) (st ∷ ps). PeerHasAgency pr st → Maybe DiffTime
- data ProtocolLimitFailure where
- 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
- runPeerWithLimits ∷ ∀ ps (st ∷ ps) pr failure bytes m a. (MonadAsync m, MonadFork m, MonadMask m, MonadThrow (STM 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)
- data TraceSendRecv ps where
- TraceSendMsg ∷ AnyMessageAndAgency ps → TraceSendRecv ps
- TraceRecvMsg ∷ AnyMessageAndAgency ps → TraceSendRecv ps
- runPipelinedPeerWithLimits ∷ ∀ ps (st ∷ ps) pr failure bytes m a. (MonadAsync m, MonadFork m, MonadMask m, MonadThrow (STM 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)
- 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
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 |
Instances
Normal peers
runPeerWithLimits ∷ ∀ ps (st ∷ ps) pr failure bytes m a. (MonadAsync m, MonadFork m, MonadMask m, MonadThrow (STM 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 #
Constructors
TraceSendMsg ∷ AnyMessageAndAgency ps → TraceSendRecv ps | |
TraceRecvMsg ∷ AnyMessageAndAgency ps → TraceSendRecv ps |
Instances
Show (AnyMessageAndAgency ps) ⇒ Show (TraceSendRecv ps) Source # | |
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), 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
MonadAsync
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 #