Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Network.Mux.Compat
Synopsis
- muxStart ∷ ∀ m mode a b. (MonadAsync m, MonadFork m, MonadLabelledSTM m, Alternative (STM m), MonadThrow (STM m), MonadTimer m, MonadMask m) ⇒ Tracer m MuxTrace → MuxApplication mode m a b → MuxBearer m → m ()
- data MuxBearer m
- newtype MakeBearer m fd = MakeBearer {}
- data MuxMode where
- type family HasInitiator (mode ∷ MuxMode) ∷ Bool where ...
- type family HasResponder (mode ∷ MuxMode) ∷ Bool where ...
- newtype MuxApplication (mode ∷ MuxMode) m a b = MuxApplication [MuxMiniProtocol mode m a b]
- data MuxMiniProtocol (mode ∷ MuxMode) m a b = MuxMiniProtocol {
- miniProtocolNum ∷ !MiniProtocolNum
- miniProtocolLimits ∷ !MiniProtocolLimits
- miniProtocolRun ∷ !(RunMiniProtocol mode m a b)
- data RunMiniProtocol (mode ∷ MuxMode) m a b where
- InitiatorProtocolOnly ∷ (Channel m → m (a, Maybe ByteString)) → RunMiniProtocol InitiatorMode m a Void
- ResponderProtocolOnly ∷ (Channel m → m (b, Maybe ByteString)) → RunMiniProtocol ResponderMode m Void b
- InitiatorAndResponderProtocol ∷ (Channel m → m (a, Maybe ByteString)) → (Channel m → m (b, Maybe ByteString)) → RunMiniProtocol InitiatorResponderMode m a b
- newtype MiniProtocolNum = MiniProtocolNum Word16
- newtype MiniProtocolLimits = MiniProtocolLimits {}
- data MiniProtocolDir
- data MuxError = MuxError {}
- data MuxErrorType
- traceMuxBearerState ∷ Tracer m MuxTrace → MuxBearerState → m ()
- data MuxBearerState
- data MuxTrace
- = MuxTraceRecvHeaderStart
- | MuxTraceRecvHeaderEnd MuxSDUHeader
- | MuxTraceRecvDeltaQObservation MuxSDUHeader Time
- | MuxTraceRecvDeltaQSample Double Int Int Double Double Double Double String
- | MuxTraceRecvStart Int
- | MuxTraceRecvEnd Int
- | MuxTraceSendStart MuxSDUHeader
- | MuxTraceSendEnd
- | MuxTraceState MuxBearerState
- | MuxTraceCleanExit MiniProtocolNum MiniProtocolDir
- | MuxTraceExceptionExit MiniProtocolNum MiniProtocolDir SomeException
- | MuxTraceChannelRecvStart MiniProtocolNum
- | MuxTraceChannelRecvEnd MiniProtocolNum Int
- | MuxTraceChannelSendStart MiniProtocolNum Int
- | MuxTraceChannelSendEnd MiniProtocolNum
- | MuxTraceHandshakeStart
- | MuxTraceHandshakeClientEnd DiffTime
- | MuxTraceHandshakeServerEnd
- | ∀ e.Exception e ⇒ MuxTraceHandshakeClientError e DiffTime
- | ∀ e.Exception e ⇒ MuxTraceHandshakeServerError e
- | MuxTraceSDUReadTimeoutException
- | MuxTraceSDUWriteTimeoutException
- | MuxTraceStartEagerly MiniProtocolNum MiniProtocolDir
- | MuxTraceStartOnDemand MiniProtocolNum MiniProtocolDir
- | MuxTraceStartedOnDemand MiniProtocolNum MiniProtocolDir
- | MuxTraceTerminating MiniProtocolNum MiniProtocolDir
- | MuxTraceStopping
- | MuxTraceStopped
- | MuxTraceTCPInfo StructTCPInfo Word16
- data WithMuxBearer peerid a = WithMuxBearer {}
Documentation
muxStart ∷ ∀ m mode a b. (MonadAsync m, MonadFork m, MonadLabelledSTM m, Alternative (STM m), MonadThrow (STM m), MonadTimer m, MonadMask m) ⇒ Tracer m MuxTrace → MuxApplication mode m a b → MuxBearer m → m () Source #
Mux bearers
Low level access to underlying socket or pipe. There are three smart constructors:
socketAsMuxBearer
pipeAsMuxBearer
Test.Mux.queuesAsMuxBearer
newtype MakeBearer m fd Source #
Defining MuxApplication
s
Constructors
InitiatorMode ∷ MuxMode | |
ResponderMode ∷ MuxMode | |
InitiatorResponderMode ∷ MuxMode |
type family HasInitiator (mode ∷ MuxMode) ∷ Bool where ... Source #
type family HasResponder (mode ∷ MuxMode) ∷ Bool where ... Source #
newtype MuxApplication (mode ∷ MuxMode) m a b Source #
Constructors
MuxApplication [MuxMiniProtocol mode m a b] |
data MuxMiniProtocol (mode ∷ MuxMode) m a b Source #
Constructors
MuxMiniProtocol | |
Fields
|
data RunMiniProtocol (mode ∷ MuxMode) m a b where Source #
Constructors
InitiatorProtocolOnly ∷ (Channel m → m (a, Maybe ByteString)) → RunMiniProtocol InitiatorMode m a Void | |
ResponderProtocolOnly ∷ (Channel m → m (b, Maybe ByteString)) → RunMiniProtocol ResponderMode m Void b | |
InitiatorAndResponderProtocol ∷ (Channel m → m (a, Maybe ByteString)) → (Channel m → m (b, Maybe ByteString)) → RunMiniProtocol InitiatorResponderMode m a b |
newtype MiniProtocolNum Source #
The wire format includes the protocol numbers, and it's vital that these
are stable. They are not necessarily dense however, as new ones are added
and some old ones retired. So we use a dedicated class for this rather than
reusing Enum
. This also covers unrecognised protocol numbers on the
decoding side.
Constructors
MiniProtocolNum Word16 |
Instances
newtype MiniProtocolLimits Source #
Per Miniprotocol limits
Constructors
MiniProtocolLimits | |
Fields
|
data MiniProtocolDir Source #
Constructors
InitiatorDir | |
ResponderDir |
Instances
Errors
Error type used in across the mux layer.
Constructors
MuxError | |
Fields
|
Instances
Exception MuxError Source # | |
Defined in Network.Mux.Trace Methods toException ∷ MuxError → SomeException Source # | |
Generic MuxError Source # | |
Show MuxError Source # | |
type Rep MuxError Source # | |
Defined in Network.Mux.Trace type Rep MuxError = D1 ('MetaData "MuxError" "Network.Mux.Trace" "network-mux-0.4.0.0-inplace" 'False) (C1 ('MetaCons "MuxError" 'PrefixI 'True) (S1 ('MetaSel ('Just "errorType") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MuxErrorType) :*: S1 ('MetaSel ('Just "errorMsg") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 String))) |
data MuxErrorType Source #
Enumeration of error conditions.
Constructors
MuxUnknownMiniProtocol | returned by |
MuxDecodeError | return by |
MuxBearerClosed | thrown by |
MuxIngressQueueOverRun | thrown by |
MuxInitiatorOnly | thrown when data arrives on a responder channel when the
mux was set up as an |
MuxIOException IOException |
|
MuxSDUReadTimeout | thrown when reading of a single SDU takes too long |
MuxSDUWriteTimeout | thrown when writing a single SDU takes too long |
MuxShutdown !(Maybe MuxErrorType) | Result of runMiniProtocol's completionAction in case of an error or mux being closed while a mini-protocol was still running, this is not a clean exit. |
MuxCleanShutdown | Mux stopped by |
Instances
Show MuxErrorType Source # | |
Defined in Network.Mux.Trace | |
Eq MuxErrorType Source # | |
Defined in Network.Mux.Trace Methods (==) ∷ MuxErrorType → MuxErrorType → Bool Source # (/=) ∷ MuxErrorType → MuxErrorType → Bool Source # |
Tracing
traceMuxBearerState ∷ Tracer m MuxTrace → MuxBearerState → m () Source #
data MuxBearerState Source #
Constructors
Mature | MuxBearer has successfully completed the handshake. |
Dead | MuxBearer is dead and the underlying bearer has been closed. |
Instances
Show MuxBearerState Source # | |
Defined in Network.Mux.Trace | |
Eq MuxBearerState Source # | |
Defined in Network.Mux.Trace Methods (==) ∷ MuxBearerState → MuxBearerState → Bool Source # (/=) ∷ MuxBearerState → MuxBearerState → Bool Source # |
Enumeration of Mux events that can be traced.
Constructors
data WithMuxBearer peerid a Source #
Type used for tracing mux events.
Constructors
WithMuxBearer | |
Instances
Generic (WithMuxBearer peerid a) Source # | |
Defined in Network.Mux.Trace Methods from ∷ WithMuxBearer peerid a → Rep (WithMuxBearer peerid a) x Source # to ∷ Rep (WithMuxBearer peerid a) x → WithMuxBearer peerid a Source # | |
(Show peerid, Show a) ⇒ Show (WithMuxBearer peerid a) Source # | |
Defined in Network.Mux.Trace | |
type Rep (WithMuxBearer peerid a) Source # | |
Defined in Network.Mux.Trace type Rep (WithMuxBearer peerid a) = D1 ('MetaData "WithMuxBearer" "Network.Mux.Trace" "network-mux-0.4.0.0-inplace" 'False) (C1 ('MetaCons "WithMuxBearer" 'PrefixI 'True) (S1 ('MetaSel ('Just "wmbPeerId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 peerid) :*: S1 ('MetaSel ('Just "wmbEvent") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))) |