Safe Haskell | None |
---|---|
Language | Haskell2010 |
Ouroboros.Network.Server
Contents
Description
Server implementation based on ConnectionManager
This module should be imported qualified.
Synopsis
- data Arguments (muxMode :: Mode) socket peerAddr initiatorCtx responderCtx handle handlerTrace handleError versionNumber versionData bytes (m :: Type -> Type) a b x = Arguments {
- sockets :: NonEmpty socket
- snocket :: Snocket m socket peerAddr
- tracer :: Tracer m (Trace peerAddr)
- connectionLimits :: AcceptedConnectionsLimit
- inboundGovernorArgs :: Arguments muxMode handlerTrace socket peerAddr initiatorCtx responderCtx handle handleError versionNumber versionData bytes m a b x
- with :: forall (muxMode :: Mode) socket peerAddr initiatorCtx responderCtx handle handlerTrace handleError versionNumber versionData bytes m a b x. (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, MonadTraceSTM m, MonadFork m, MonadFix m) => Arguments muxMode socket peerAddr initiatorCtx responderCtx handle handlerTrace handleError versionNumber versionData bytes m a b x -> (Async m Void -> m (PublicState peerAddr versionData) -> ConnectionManager muxMode socket peerAddr handle handleError m -> m x) -> m x
- data Trace peerAddr
- data AcceptConnectionsPolicyTrace
- data RemoteSt
- type RemoteTransition = Transition' (Maybe RemoteSt)
- type RemoteTransitionTrace peerAddr = TransitionTrace' peerAddr (Maybe RemoteSt)
- isECONNABORTED :: IOError -> Bool
Documentation
data Arguments (muxMode :: Mode) socket peerAddr initiatorCtx responderCtx handle handlerTrace handleError versionNumber versionData bytes (m :: Type -> Type) a b x Source #
Server static configuration.
Constructors
Arguments | |
Fields
|
Run server
Arguments
:: forall (muxMode :: Mode) socket peerAddr initiatorCtx responderCtx handle handlerTrace handleError versionNumber versionData bytes m a b x. (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, MonadTraceSTM m, MonadFork m, MonadFix m) | |
=> Arguments muxMode socket peerAddr initiatorCtx responderCtx handle handlerTrace handleError versionNumber versionData bytes m a b x | record which holds all server arguments |
-> (Async m Void -> m (PublicState peerAddr versionData) -> ConnectionManager muxMode socket peerAddr handle handleError m -> m x) | a callback which receives a handle to inbound governor thread and can
read Note that as soon as the callback returns, all threads run by the server will be stopped. |
-> m x |
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:
InitiatorResponderMode
ResponderMode
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
Constructors
TrAcceptConnection (ConnectionId peerAddr) | |
TrAcceptError SomeException | |
TrAcceptPolicyTrace AcceptConnectionsPolicyTrace | |
TrServerStarted [peerAddr] | |
TrServerStopped | |
TrServerError SomeException | similar to |
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.
This type is used for tracing.
Constructors
RemoteWarmSt | |
RemoteHotSt | |
RemoteIdleSt | |
RemoteColdSt |
type RemoteTransition = Transition' (Maybe RemoteSt) Source #
Nothing
represents uninitialised state.
type RemoteTransitionTrace peerAddr = TransitionTrace' peerAddr (Maybe RemoteSt) Source #
isECONNABORTED :: IOError -> Bool Source #