| 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:
socketAsMuxBearerpipeAsMuxBearerTest.Mux.queuesAsMuxBearer
Defining MuxApplications
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-9qnrCYRZ9LiHKrvxV6Ik09" '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-9qnrCYRZ9LiHKrvxV6Ik09" 'False) (C1 ('MetaCons "WithMuxBearer" 'PrefixI 'True) (S1 ('MetaSel ('Just "wmbPeerId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 peerid) :*: S1 ('MetaSel ('Just "wmbEvent") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))) | |