Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ouroboros.Network.Server2
Contents
Description
Server implementation based on ConnectionManager
Synopsis
- data ServerArguments (muxMode ∷ MuxMode) socket peerAddr versionData versionNumber bytes m a b = ServerArguments {
- serverSockets ∷ NonEmpty socket
- serverSnocket ∷ Snocket m socket peerAddr
- serverTracer ∷ Tracer m (ServerTrace peerAddr)
- serverTrTracer ∷ Tracer m (RemoteTransitionTrace peerAddr)
- serverInboundGovernorTracer ∷ Tracer m (InboundGovernorTrace peerAddr)
- serverConnectionLimits ∷ AcceptedConnectionsLimit
- serverConnectionManager ∷ MuxConnectionManager muxMode socket peerAddr versionData versionNumber bytes m a b
- serverInboundIdleTimeout ∷ Maybe DiffTime
- serverControlChannel ∷ ServerControlChannel muxMode peerAddr versionData bytes m a b
- serverObservableStateVar ∷ StrictTVar m InboundGovernorObservableState
- newtype InboundGovernorObservableState = InboundGovernorObservableState {}
- newObservableStateVar ∷ MonadLabelledSTM m ⇒ StdGen → m (StrictTVar m InboundGovernorObservableState)
- newObservableStateVarIO ∷ IO (StrictTVar IO InboundGovernorObservableState)
- newObservableStateVarFromSeed ∷ MonadLabelledSTM m ⇒ Int → m (StrictTVar m InboundGovernorObservableState)
- run ∷ ∀ muxMode socket peerAddr versionData versionNumber m a b. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadCatch m, MonadEvaluate m, MonadLabelledSTM m, MonadMask m, MonadThrow (STM m), MonadTime m, MonadTimer m, HasResponder muxMode ~ True, Ord peerAddr, Show peerAddr) ⇒ ServerArguments muxMode socket peerAddr versionData versionNumber ByteString m a b → m Void
- data ServerTrace peerAddr
- data AcceptConnectionsPolicyTrace
- data RemoteSt
- type RemoteTransition = Transition' (Maybe RemoteSt)
- type RemoteTransitionTrace peerAddr = TransitionTrace' peerAddr (Maybe RemoteSt)
- module Ouroboros.Network.InboundGovernor.ControlChannel
Documentation
data ServerArguments (muxMode ∷ MuxMode) socket peerAddr versionData versionNumber bytes m a b Source #
Server static configuration.
Constructors
ServerArguments | |
Fields
|
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 server
run ∷ ∀ muxMode socket peerAddr versionData versionNumber m a b. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadCatch m, MonadEvaluate m, MonadLabelledSTM m, MonadMask m, MonadThrow (STM m), MonadTime m, MonadTimer m, HasResponder muxMode ~ True, Ord peerAddr, Show peerAddr) ⇒ ServerArguments muxMode socket peerAddr versionData versionNumber ByteString m a b → 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 ServerTrace peerAddr Source #
Constructors
TrAcceptConnection peerAddr | |
TrAcceptError SomeException | |
TrAcceptPolicyTrace AcceptConnectionsPolicyTrace | |
TrServerStarted [peerAddr] | |
TrServerStopped | |
TrServerError SomeException | similar to |
Instances
Show peerAddr ⇒ Show (ServerTrace peerAddr) Source # | |
Defined in Ouroboros.Network.Server2 |
data AcceptConnectionsPolicyTrace Source #
Trace for the AcceptConnectionsLimit
policy.
Constructors
ServerTraceAcceptConnectionRateLimiting DiffTime Int | |
ServerTraceAcceptConnectionHardLimit Word32 | |
ServerTraceAcceptConnectionResume Int |
Instances
Remote connection state tracked by inbound protocol governor.
Constructors
RemoteWarmSt | |
RemoteHotSt | |
RemoteIdleSt | |
RemoteColdSt |
type RemoteTransition = Transition' (Maybe RemoteSt) Source #
Nothing
represents unitialised state.
type RemoteTransitionTrace peerAddr = TransitionTrace' peerAddr (Maybe RemoteSt) Source #