Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Network.Mux.Types
Synopsis
- newtype MiniProtocolBundle (mode ∷ MuxMode) = MiniProtocolBundle [MiniProtocolInfo mode]
- data MiniProtocolInfo (mode ∷ MuxMode) = MiniProtocolInfo {}
- newtype MiniProtocolNum = MiniProtocolNum Word16
- data MiniProtocolDirection (mode ∷ MuxMode) where
- newtype MiniProtocolLimits = MiniProtocolLimits {}
- data MuxMode where
- type family HasInitiator (mode ∷ MuxMode) ∷ Bool where ...
- type family HasResponder (mode ∷ MuxMode) ∷ Bool where ...
- type IngressQueue m = StrictTVar m ByteString
- data MiniProtocolIx
- data MiniProtocolDir
- protocolDirEnum ∷ MiniProtocolDirection mode → MiniProtocolDir
- data MiniProtocolState mode m = MiniProtocolState {}
- data MiniProtocolStatus
- data MuxBearer m = MuxBearer {}
- muxBearerAsChannel ∷ ∀ m. Functor m ⇒ MuxBearer m → MiniProtocolNum → MiniProtocolDir → Channel m
- data MuxSDU = MuxSDU {}
- data MuxSDUHeader = MuxSDUHeader {}
- newtype SDUSize = SDUSize {}
- msTimestamp ∷ MuxSDU → RemoteClockModel
- setTimestamp ∷ MuxSDU → RemoteClockModel → MuxSDU
- msNum ∷ MuxSDU → MiniProtocolNum
- msDir ∷ MuxSDU → MiniProtocolDir
- msLength ∷ MuxSDU → Word16
- newtype RemoteClockModel = RemoteClockModel {}
- remoteClockPrecision ∷ DiffTime
- data MuxRuntimeError
Documentation
newtype MiniProtocolBundle (mode ∷ MuxMode) Source #
Application run by mux layer.
- enumeration of client application, e.g. a wallet application communicating with a node using ChainSync and TxSubmission protocols; this only requires to run client side of each protocol.
- enumeration of server applications: this application type is mostly useful tests.
- enumeration of both client and server applications, e.g. a full node serving downstream peers using server side of each protocol and getting updates from upstream peers using client side of each of the protocols.
Constructors
MiniProtocolBundle [MiniProtocolInfo mode] |
data MiniProtocolInfo (mode ∷ MuxMode) Source #
Constructors
MiniProtocolInfo | |
Fields |
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 MiniProtocolDirection (mode ∷ MuxMode) where Source #
Constructors
Instances
Eq (MiniProtocolDirection mode) Source # | |
Defined in Network.Mux.Types Methods (==) ∷ MiniProtocolDirection mode → MiniProtocolDirection mode → Bool Source # (/=) ∷ MiniProtocolDirection mode → MiniProtocolDirection mode → Bool Source # | |
Ord (MiniProtocolDirection mode) Source # | |
Defined in Network.Mux.Types Methods compare ∷ MiniProtocolDirection mode → MiniProtocolDirection mode → Ordering Source # (<) ∷ MiniProtocolDirection mode → MiniProtocolDirection mode → Bool Source # (<=) ∷ MiniProtocolDirection mode → MiniProtocolDirection mode → Bool Source # (>) ∷ MiniProtocolDirection mode → MiniProtocolDirection mode → Bool Source # (>=) ∷ MiniProtocolDirection mode → MiniProtocolDirection mode → Bool Source # max ∷ MiniProtocolDirection mode → MiniProtocolDirection mode → MiniProtocolDirection mode Source # min ∷ MiniProtocolDirection mode → MiniProtocolDirection mode → MiniProtocolDirection mode Source # |
newtype MiniProtocolLimits Source #
Per Miniprotocol limits
Constructors
MiniProtocolLimits | |
Fields
|
Constructors
InitiatorMode ∷ MuxMode | |
ResponderMode ∷ MuxMode | |
InitiatorResponderMode ∷ MuxMode |
type family HasInitiator (mode ∷ MuxMode) ∷ Bool where ... Source #
type family HasResponder (mode ∷ MuxMode) ∷ Bool where ... Source #
type IngressQueue m = StrictTVar m ByteString Source #
data MiniProtocolIx Source #
The index of a protocol in a MuxApplication, used for array indices
Instances
data MiniProtocolDir Source #
Constructors
InitiatorDir | |
ResponderDir |
Instances
data MiniProtocolState mode m Source #
Constructors
MiniProtocolState | |
data MiniProtocolStatus Source #
Constructors
StatusIdle | |
StatusStartOnDemand | |
StatusRunning |
Instances
Show MiniProtocolStatus Source # | |
Defined in Network.Mux.Types | |
Eq MiniProtocolStatus Source # | |
Defined in Network.Mux.Types Methods (==) ∷ MiniProtocolStatus → MiniProtocolStatus → Bool Source # (/=) ∷ MiniProtocolStatus → MiniProtocolStatus → Bool Source # |
Low level access to underlying socket or pipe. There are three smart constructors:
socketAsMuxBearer
pipeAsMuxBearer
Test.Mux.queuesAsMuxBearer
muxBearerAsChannel ∷ ∀ m. Functor m ⇒ MuxBearer m → MiniProtocolNum → MiniProtocolDir → Channel m Source #
A channel which wraps each message as an MuxSDU
using giving
MiniProtocolNum
and MiniProtocolDir
.
Constructors
MuxSDU | |
Fields
|
data MuxSDUHeader Source #
Constructors
MuxSDUHeader | |
Fields |
Constructors
SDUSize | |
Fields |
newtype RemoteClockModel Source #
Constructors
RemoteClockModel | |
Fields |
Instances
Bounded RemoteClockModel Source # | |
Defined in Network.Mux.Types | |
Eq RemoteClockModel Source # | |
Defined in Network.Mux.Types Methods |
remoteClockPrecision ∷ DiffTime Source #
The DiffTime
represented by a tick in the RemoteClockModel
data MuxRuntimeError Source #
Constructors
ProtocolAlreadyRunning !MiniProtocolNum !MiniProtocolDir !MiniProtocolStatus | |
UnknownProtocolInternalError !MiniProtocolNum !MiniProtocolDir | |
MuxBlockedOnCompletionVar !MiniProtocolNum |
Instances
Exception MuxRuntimeError Source # | |
Defined in Network.Mux.Types | |
Show MuxRuntimeError Source # | |
Defined in Network.Mux.Types |