ouroboros-network-framework-0.13.1.0: Ouroboros network framework
Safe HaskellSafe-Inferred
LanguageHaskell2010

Ouroboros.Network.InboundGovernor.State

Contents

Synopsis

Documentation

data PublicInboundGovernorState peerAddr versionData Source #

Public inbound governor state.

Constructors

PublicInboundGovernorState 

Fields

Internals

mkPublicInboundGovernorState ∷ ∀ muxMode initatorCtx versionData peerAddr m a b. InboundGovernorState muxMode initatorCtx peerAddr versionData m a b → PublicInboundGovernorState peerAddr versionData Source #

Smart constructor for PublicInboundGovernorState.

NOTE: we assume that all inbound connections share the same address. This is true in P2P mode since all outbound connections (which also can end up in the InboundGovernorState) bind the server address. This allows us to use mapKeysMonotonic.

data InboundGovernorState muxMode initiatorCtx peerAddr versionData m a b Source #

InboundGovernorState, which consist of pure part, and a mutable part. The mutable part can be observable from outside. Future version could contain additional statistics on the peers.

Constructors

InboundGovernorState 

Fields

data ConnectionState muxMode initiatorCtx peerAddr versionData m a b Source #

Per connection state tracked by inbound protocol governor.

Constructors

ConnectionState 

Fields

data InboundGovernorCounters Source #

Counters for tracing and analysis purposes

Constructors

InboundGovernorCounters 

Fields

Instances

Instances details
Monoid InboundGovernorCounters Source # 
Instance details

Defined in Ouroboros.Network.InboundGovernor.State

Semigroup InboundGovernorCounters Source # 
Instance details

Defined in Ouroboros.Network.InboundGovernor.State

Show InboundGovernorCounters Source # 
Instance details

Defined in Ouroboros.Network.InboundGovernor.State

Eq InboundGovernorCounters Source # 
Instance details

Defined in Ouroboros.Network.InboundGovernor.State

Ord InboundGovernorCounters Source # 
Instance details

Defined in Ouroboros.Network.InboundGovernor.State

inboundGovernorCountersInboundGovernorState muxMode initiatorCtx peerAddr versionData m a b → InboundGovernorCounters Source #

unregisterConnectionOrd peerAddr ⇒ ConnectionId peerAddr → InboundGovernorState muxMode initiatorCtx peerAddr versionData m a b → InboundGovernorState muxMode initiatorCtx peerAddr versionData m a b Source #

Remove connection from InboundGovernorState.

updateMiniProtocolOrd peerAddr ⇒ ConnectionId peerAddr → MiniProtocolNumSTM m (Either SomeException b) → InboundGovernorState muxMode initiatorCtx peerAddr versionData m a b → InboundGovernorState muxMode initiatorCtx peerAddr versionData m a b Source #

Update a mini-protocol in ConnectionState. Once a mini-protocol was restarted we put the new completion action into csCompletionMap.

data RemoteState m Source #

Each inbound connection is either in RemoteIdle, RemoteCold or RemoteEstablished state. We only need to support PromotedToWarm^{Duplex}_{Remote}, DemotedToCold^{Duplex}_{Remote} and DemotedToCold^{Unidirectional}_{Remote} transitions.

Constructors

RemoteWarm

After PromotedToWarm^{dataFlow}_{Remote} a connection is in RemoteWarm state.

RemoteHot

In this state all established and hot mini-protocols are running and none of the warm mini-protocols is running.

RemoteIdle !(STM m ())

After DemotedToCold^{dataFlow}_{Remote} is detected. This state corresponds to InboundIdleState. In this state we are checking if the responder protocols are idle during protocol idle timeout (represented by an STM action)

RemoteIdle is the initial state of an accepted a connection.

RemoteCold

The RemoteCold state for Duplex connections allows us to have responders started using the on-demand strategy. This assures that once the remote peer start using the connection the local side will be ready to serve it.

For a Duplex connection: a RemoteIdle connection transitions to RemoteCold state after all responders being idle for protocolIdleTimeout. This triggers unregisterInboundConnection.

For a Unidreictional connection: after all responders terminated.

Bundled Patterns

pattern RemoteEstablishedRemoteState m 

data RemoteSt Source #

Remote connection state tracked by inbound protocol governor.

This type is used for tracing.

Instances

Instances details
Show RemoteSt Source # 
Instance details

Defined in Ouroboros.Network.InboundGovernor.State

Methods

showsPrecIntRemoteStShowS #

showRemoteStString #

showList ∷ [RemoteSt] → ShowS #

Eq RemoteSt Source # 
Instance details

Defined in Ouroboros.Network.InboundGovernor.State

Methods

(==)RemoteStRemoteStBool #

(/=)RemoteStRemoteStBool #

updateRemoteStateOrd peerAddr ⇒ ConnectionId peerAddr → RemoteState m → InboundGovernorState muxMode initiatorCtx peerAddr versionData m a b → InboundGovernorState muxMode initiatorCtx peerAddr versionData m a b Source #

Set csRemoteState for a given connection.

mapRemoteStateOrd peerAddr ⇒ ConnectionId peerAddr → (RemoteState m → RemoteState m) → InboundGovernorState muxMode initiatorCtx peerAddr versionData m a b → InboundGovernorState muxMode initiatorCtx peerAddr versionData m a b Source #

data MiniProtocolData muxMode initiatorCtx peerAddr m a b Source #

Constructors

MiniProtocolData 

Fields