Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ouroboros.Network.InboundGovernor
Description
Server implementation based on ConnectionManager
Synopsis
- newtype InboundGovernorObservableState = InboundGovernorObservableState {}
- newObservableStateVar ∷ MonadLabelledSTM m ⇒ StdGen → m (StrictTVar m InboundGovernorObservableState)
- newObservableStateVarIO ∷ IO (StrictTVar IO InboundGovernorObservableState)
- newObservableStateVarFromSeed ∷ MonadLabelledSTM m ⇒ Int → m (StrictTVar m InboundGovernorObservableState)
- inboundGovernor ∷ ∀ (muxMode ∷ MuxMode) socket initiatorCtx peerAddr versionData versionNumber m a b. (Alternative (STM m), MonadAsync m, MonadCatch m, MonadEvaluate m, MonadThrow m, MonadThrow (STM m), MonadTime m, MonadTimer m, MonadMask m, Ord peerAddr, HasResponder muxMode ~ True) ⇒ Tracer m (RemoteTransitionTrace peerAddr) → Tracer m (InboundGovernorTrace peerAddr) → InboundGovernorInfoChannel muxMode initiatorCtx peerAddr versionData ByteString m a b → Maybe DiffTime → MuxConnectionManager muxMode socket initiatorCtx (ResponderContext peerAddr) peerAddr versionData versionNumber ByteString m a b → StrictTVar m InboundGovernorObservableState → m Void
- data InboundGovernorTrace peerAddr
- = TrNewConnection !Provenance !(ConnectionId peerAddr)
- | TrResponderRestarted !(ConnectionId peerAddr) !MiniProtocolNum
- | TrResponderStartFailure !(ConnectionId peerAddr) !MiniProtocolNum !SomeException
- | TrResponderErrored !(ConnectionId peerAddr) !MiniProtocolNum !SomeException
- | TrResponderStarted !(ConnectionId peerAddr) !MiniProtocolNum
- | TrResponderTerminated !(ConnectionId peerAddr) !MiniProtocolNum
- | TrPromotedToWarmRemote !(ConnectionId peerAddr) !(OperationResult AbstractState)
- | TrPromotedToHotRemote !(ConnectionId peerAddr)
- | TrDemotedToWarmRemote !(ConnectionId peerAddr)
- | TrDemotedToColdRemote !(ConnectionId peerAddr) !(OperationResult DemotedToColdRemoteTr)
- | TrWaitIdleRemote !(ConnectionId peerAddr) !(OperationResult AbstractState)
- | TrMuxCleanExit !(ConnectionId peerAddr)
- | TrMuxErrored !(ConnectionId peerAddr) SomeException
- | TrInboundGovernorCounters !InboundGovernorCounters
- | TrRemoteState !(Map (ConnectionId peerAddr) RemoteSt)
- | TrUnexpectedlyFalseAssertion !(IGAssertionLocation peerAddr)
- | TrInboundGovernorError !SomeException
- data RemoteSt
- type RemoteTransition = Transition' (Maybe RemoteSt)
- type RemoteTransitionTrace peerAddr = TransitionTrace' peerAddr (Maybe RemoteSt)
- data AcceptConnectionsPolicyTrace
- data Transition' state = Transition {}
- data TransitionTrace' peerAddr state = TransitionTrace {
- ttPeerAddr ∷ peerAddr
- ttTransition ∷ Transition' state
Documentation
newtype InboundGovernorObservableState Source #
Currently only StdGen
, but in the future this will be extended to
a record which contains some useful statistics about peers to support more
advanced prune strategies (see. PruneStrategy
).
Constructors
InboundGovernorObservableState | |
newObservableStateVar ∷ MonadLabelledSTM m ⇒ StdGen → m (StrictTVar m InboundGovernorObservableState) Source #
Create new observable state StrictTVar
.
newObservableStateVarIO ∷ IO (StrictTVar IO InboundGovernorObservableState) Source #
Using the global StdGen
.
newObservableStateVarFromSeed ∷ MonadLabelledSTM m ⇒ Int → m (StrictTVar m InboundGovernorObservableState) Source #
Useful for testing, it is using mkStdGen
.
Run Inbound Protocol Governor
inboundGovernor ∷ ∀ (muxMode ∷ MuxMode) socket initiatorCtx peerAddr versionData versionNumber m a b. (Alternative (STM m), MonadAsync m, MonadCatch m, MonadEvaluate m, MonadThrow m, MonadThrow (STM m), MonadTime m, MonadTimer m, MonadMask m, Ord peerAddr, HasResponder muxMode ~ True) ⇒ Tracer m (RemoteTransitionTrace peerAddr) → Tracer m (InboundGovernorTrace peerAddr) → InboundGovernorInfoChannel muxMode initiatorCtx peerAddr versionData ByteString m a b → Maybe DiffTime → MuxConnectionManager muxMode socket initiatorCtx (ResponderContext peerAddr) peerAddr versionData versionNumber ByteString m a b → StrictTVar m InboundGovernorObservableState → m Void Source #
Run the server, which consists of the following components:
- inbound governor, it corresponds to p2p-governor on outbound side
- accept loop(s), one per given ip address. We support up to one ipv4 address and up to one ipv6 address, i.e. an ipv6 enabled node will run two accept loops on listening on different addresses with shared inbound governor.
The server can be run in either of two MuxMode
-es:
The first one is used in data diffusion for Node-To-Node protocol, while the other is useful for running a server for the Node-To-Client protocol.
Trace
data InboundGovernorTrace peerAddr Source #
Constructors
Instances
Show peerAddr ⇒ Show (InboundGovernorTrace peerAddr) Source # | |
Defined in Ouroboros.Network.InboundGovernor Methods showsPrec ∷ Int → InboundGovernorTrace peerAddr → ShowS # show ∷ InboundGovernorTrace peerAddr → String # showList ∷ [InboundGovernorTrace peerAddr] → ShowS # |
Remote connection state tracked by inbound protocol governor.
Constructors
RemoteWarmSt | |
RemoteHotSt | |
RemoteIdleSt | |
RemoteColdSt |
type RemoteTransition = Transition' (Maybe RemoteSt) Source #
Nothing
represents uninitialised state.
type RemoteTransitionTrace peerAddr = TransitionTrace' peerAddr (Maybe RemoteSt) Source #
data AcceptConnectionsPolicyTrace Source #
Trace for the AcceptConnectionsLimit
policy.
Constructors
ServerTraceAcceptConnectionRateLimiting DiffTime Int | |
ServerTraceAcceptConnectionHardLimit Word32 | |
ServerTraceAcceptConnectionResume Int |
Instances
Re-exports
data Transition' state Source #
Constructors
Transition | |
Instances
Functor Transition' Source # | |
Defined in Ouroboros.Network.ConnectionManager.Types | |
Show state ⇒ Show (Transition' state) Source # | |
Defined in Ouroboros.Network.ConnectionManager.Types Methods showsPrec ∷ Int → Transition' state → ShowS # show ∷ Transition' state → String # showList ∷ [Transition' state] → ShowS # | |
Eq state ⇒ Eq (Transition' state) Source # | |
Defined in Ouroboros.Network.ConnectionManager.Types Methods (==) ∷ Transition' state → Transition' state → Bool # (/=) ∷ Transition' state → Transition' state → Bool # |
data TransitionTrace' peerAddr state Source #
Constructors
TransitionTrace | |
Fields
|
Instances
Functor (TransitionTrace' peerAddr) Source # | |
Defined in Ouroboros.Network.ConnectionManager.Types Methods fmap ∷ (a → b) → TransitionTrace' peerAddr a → TransitionTrace' peerAddr b # (<$) ∷ a → TransitionTrace' peerAddr b → TransitionTrace' peerAddr a # | |
(Show peerAddr, Show state) ⇒ Show (TransitionTrace' peerAddr state) Source # | |
Defined in Ouroboros.Network.ConnectionManager.Types Methods showsPrec ∷ Int → TransitionTrace' peerAddr state → ShowS # show ∷ TransitionTrace' peerAddr state → String # showList ∷ [TransitionTrace' peerAddr state] → ShowS # |