| Safe Haskell | None |
|---|---|
| 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
- data 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 :: forall m. Functor m => MuxBearer m -> MiniProtocolNum -> MiniProtocolDir -> Channel m
- data MuxSDU = MuxSDU {
- msHeader :: !MuxSDUHeader
- msBlob :: !ByteString
- data MuxSDUHeader = MuxSDUHeader {}
- msTimestamp :: MuxSDU -> RemoteClockModel
- setTimestamp :: MuxSDU -> RemoteClockModel -> MuxSDU
- msNum :: MuxSDU -> MiniProtocolNum
- msDir :: MuxSDU -> MiniProtocolDir
- msLength :: MuxSDU -> Word16
- newtype RemoteClockModel = RemoteClockModel {}
- remoteClockPrecision :: DiffTime
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 # (/=) :: MiniProtocolDirection mode -> MiniProtocolDirection mode -> Bool # | |
| Ord (MiniProtocolDirection mode) Source # | |
Defined in Network.Mux.Types Methods compare :: MiniProtocolDirection mode -> MiniProtocolDirection mode -> Ordering # (<) :: MiniProtocolDirection mode -> MiniProtocolDirection mode -> Bool # (<=) :: MiniProtocolDirection mode -> MiniProtocolDirection mode -> Bool # (>) :: MiniProtocolDirection mode -> MiniProtocolDirection mode -> Bool # (>=) :: MiniProtocolDirection mode -> MiniProtocolDirection mode -> Bool # max :: MiniProtocolDirection mode -> MiniProtocolDirection mode -> MiniProtocolDirection mode # min :: MiniProtocolDirection mode -> MiniProtocolDirection mode -> MiniProtocolDirection mode # | |
data 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 indicies
Instances
data MiniProtocolDir Source #
Constructors
| InitiatorDir | |
| ResponderDir |
Instances
protocolDirEnum :: MiniProtocolDirection mode -> MiniProtocolDir Source #
data MiniProtocolState mode m Source #
Constructors
| MiniProtocolState | |
Fields | |
data MiniProtocolStatus Source #
Constructors
| StatusIdle | |
| StatusStartOnDemand | |
| StatusRunning |
Instances
| Eq MiniProtocolStatus Source # | |
Defined in Network.Mux.Types Methods (==) :: MiniProtocolStatus -> MiniProtocolStatus -> Bool # (/=) :: MiniProtocolStatus -> MiniProtocolStatus -> Bool # | |
Low level access to underlying socket or pipe. There are three smart constructors:
socketAsMuxBearerpipeAsMuxBearerTest.Mux.queuesAsMuxBearer
muxBearerAsChannel :: forall 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
| |
msTimestamp :: MuxSDU -> RemoteClockModel Source #
setTimestamp :: MuxSDU -> RemoteClockModel -> MuxSDU Source #
msNum :: MuxSDU -> MiniProtocolNum Source #
msDir :: MuxSDU -> MiniProtocolDir Source #
newtype RemoteClockModel Source #
Constructors
| RemoteClockModel | |
Fields | |
Instances
| Bounded RemoteClockModel Source # | |
Defined in Network.Mux.Types | |
| Eq RemoteClockModel Source # | |
Defined in Network.Mux.Types Methods (==) :: RemoteClockModel -> RemoteClockModel -> Bool # (/=) :: RemoteClockModel -> RemoteClockModel -> Bool # | |
remoteClockPrecision :: DiffTime Source #
The DiffTime represented by a tick in the RemoteClockModel