Safe Haskell | None |
---|---|
Language | Haskell2010 |
Network.Mux.Compat
Synopsis
- muxStart :: forall m mode a b. (MonadAsync m, MonadFork m, MonadThrow (STM m), MonadTime m, MonadTimer m, MonadMask m) => Tracer m MuxTrace -> MuxApplication mode m a b -> MuxBearer m -> m ()
- data MuxBearer m
- 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
- data MiniProtocolLimits = MiniProtocolLimits {}
- data MiniProtocolDir
- data MuxError = MuxError {
- errorType :: !MuxErrorType
- errorMsg :: !String
- 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
- | forall e.Exception e => MuxTraceHandshakeClientError !e !DiffTime
- | forall e.Exception e => MuxTraceHandshakeServerError !e
- | MuxTraceSDUReadTimeoutException
- | MuxTraceSDUWriteTimeoutException
- | MuxTraceStartEagerly !MiniProtocolNum !MiniProtocolDir
- | MuxTraceStartOnDemand !MiniProtocolNum !MiniProtocolDir
- | MuxTraceStartedOnDemand !MiniProtocolNum !MiniProtocolDir
- | MuxTraceTerminating !MiniProtocolNum !MiniProtocolDir
- | MuxTraceShutdown
- data WithMuxBearer peerid a = WithMuxBearer {}
Documentation
muxStart :: forall m mode a b. (MonadAsync m, MonadFork m, MonadThrow (STM m), MonadTime 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
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
data MiniProtocolLimits Source #
Per Miniprotocol limits
Constructors
MiniProtocolLimits | |
Fields
|
data MiniProtocolDir Source #
Constructors
InitiatorDir | |
ResponderDir |
Instances
Errors
Error type used in accross the mux layer.
Constructors
MuxError | |
Fields
|
Instances
Show MuxError Source # | |
Generic MuxError Source # | |
Exception MuxError Source # | |
Defined in Network.Mux.Trace Methods toException :: MuxError -> SomeException # fromException :: SomeException -> Maybe MuxError # displayException :: MuxError -> String # | |
type Rep MuxError Source # | |
Defined in Network.Mux.Trace type Rep MuxError = D1 ('MetaData "MuxError" "Network.Mux.Trace" "network-mux-0.1.0.0-9lGOxxFsgpyBkmgq5iX8kU" '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. |
MuxCleanShutdown | Mux stopped by |
MuxBlockedOnCompletionVar !MiniProtocolNum | Mux blocked on |
Instances
Eq MuxErrorType Source # | |
Defined in Network.Mux.Trace | |
Show MuxErrorType Source # | |
Defined in Network.Mux.Trace Methods showsPrec :: Int -> MuxErrorType -> ShowS # show :: MuxErrorType -> String # showList :: [MuxErrorType] -> ShowS # |
Tracing
traceMuxBearerState :: Tracer m MuxTrace -> MuxBearerState -> m () Source #
data MuxBearerState Source #
Constructors
Mature | MuxBearer has successufully completed the handshake. |
Dead | MuxBearer is dead and the underlying bearer has been closed. |
Instances
Eq MuxBearerState Source # | |
Defined in Network.Mux.Trace Methods (==) :: MuxBearerState -> MuxBearerState -> Bool # (/=) :: MuxBearerState -> MuxBearerState -> Bool # | |
Show MuxBearerState Source # | |
Defined in Network.Mux.Trace Methods showsPrec :: Int -> MuxBearerState -> ShowS # show :: MuxBearerState -> String # showList :: [MuxBearerState] -> ShowS # |
Enumeration of Mux events that can be traced.
Constructors
data WithMuxBearer peerid a Source #
Type used for tracing mux events.
Constructors
WithMuxBearer | |
Instances
(Show peerid, Show a) => Show (WithMuxBearer peerid a) Source # | |
Defined in Network.Mux.Trace Methods showsPrec :: Int -> WithMuxBearer peerid a -> ShowS # show :: WithMuxBearer peerid a -> String # showList :: [WithMuxBearer peerid a] -> ShowS # | |
Generic (WithMuxBearer peerid a) Source # | |
Defined in Network.Mux.Trace Associated Types type Rep (WithMuxBearer peerid a) :: Type -> Type # Methods from :: WithMuxBearer peerid a -> Rep (WithMuxBearer peerid a) x # to :: Rep (WithMuxBearer peerid a) x -> WithMuxBearer peerid a # | |
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.1.0.0-9lGOxxFsgpyBkmgq5iX8kU" 'False) (C1 ('MetaCons "WithMuxBearer" 'PrefixI 'True) (S1 ('MetaSel ('Just "wmbPeerId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 peerid) :*: S1 ('MetaSel ('Just "wmbEvent") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))) |