Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Intended for qualified import
Synopsis
- data Handlers m peer blk = Handlers {
- hChainSyncServer ∷ Follower m blk (WithPoint blk (Serialised blk)) → ChainSyncServer (Serialised blk) (Point blk) (Tip blk) m ()
- hTxSubmissionServer ∷ LocalTxSubmissionServer (GenTx blk) (ApplyTxErr blk) m ()
- hStateQueryServer ∷ LocalStateQueryServer blk (Point blk) (Query blk) m ()
- hTxMonitorServer ∷ LocalTxMonitorServer (GenTxId blk) (GenTx blk) SlotNo m ()
- mkHandlers ∷ ∀ m blk addrNTN addrNTC. (IOLike m, LedgerSupportsMempool blk, LedgerSupportsProtocol blk, BlockSupportsLedgerQuery blk, ConfigSupportsNode blk) ⇒ NodeKernelArgs m addrNTN addrNTC blk → NodeKernel m addrNTN addrNTC blk → Handlers m addrNTC blk
- type ClientCodecs blk m = Codecs' blk blk DeserialiseFailure m ByteString ByteString ByteString ByteString
- type Codecs blk e m bCS bTX bSQ bTM = Codecs' blk (Serialised blk) e m bCS bTX bSQ bTM
- data Codecs' blk serialisedBlk e m bCS bTX bSQ bTM = Codecs {
- cChainSyncCodec ∷ Codec (ChainSync serialisedBlk (Point blk) (Tip blk)) e m bCS
- cTxSubmissionCodec ∷ Codec (LocalTxSubmission (GenTx blk) (ApplyTxErr blk)) e m bTX
- cStateQueryCodec ∷ Codec (LocalStateQuery blk (Point blk) (Query blk)) e State m bSQ
- cTxMonitorCodec ∷ Codec (LocalTxMonitor (GenTxId blk) (GenTx blk) SlotNo) e m bTM
- type DefaultCodecs blk m = Codecs' blk (Serialised blk) DeserialiseFailure m ByteString ByteString ByteString ByteString
- clientCodecs ∷ ∀ m blk. (MonadST m, SerialiseNodeToClientConstraints blk, ShowQuery (BlockQuery blk), StandardHash blk, Serialise (HeaderHash blk)) ⇒ CodecConfig blk → BlockNodeToClientVersion blk → NodeToClientVersion → ClientCodecs blk m
- defaultCodecs ∷ ∀ m blk. (MonadST m, SerialiseNodeToClientConstraints blk, ShowQuery (BlockQuery blk), StandardHash blk, Serialise (HeaderHash blk)) ⇒ CodecConfig blk → BlockNodeToClientVersion blk → NodeToClientVersion → DefaultCodecs blk m
- identityCodecs ∷ (Monad m, BlockSupportsLedgerQuery blk) ⇒ Codecs blk CodecFailure m (AnyMessage (ChainSync (Serialised blk) (Point blk) (Tip blk))) (AnyMessage (LocalTxSubmission (GenTx blk) (ApplyTxErr blk))) (AnyMessage (LocalStateQuery blk (Point blk) (Query blk)) State) (AnyMessage (LocalTxMonitor (GenTxId blk) (GenTx blk) SlotNo))
- type Tracers m peer blk e = Tracers' peer blk e (Tracer m)
- data Tracers' peer blk e f = Tracers {
- tChainSyncTracer ∷ f (TraceLabelPeer peer (TraceSendRecv (ChainSync (Serialised blk) (Point blk) (Tip blk))))
- tTxSubmissionTracer ∷ f (TraceLabelPeer peer (TraceSendRecv (LocalTxSubmission (GenTx blk) (ApplyTxErr blk))))
- tStateQueryTracer ∷ f (TraceLabelPeer peer (TraceSendRecv (LocalStateQuery blk (Point blk) (Query blk)) State))
- tTxMonitorTracer ∷ f (TraceLabelPeer peer (TraceSendRecv (LocalTxMonitor (GenTxId blk) (GenTx blk) SlotNo)))
- nullTracers ∷ Monad m ⇒ Tracers m peer blk e
- showTracers ∷ (Show peer, Show (GenTx blk), Show (GenTxId blk), Show (ApplyTxErr blk), ShowQuery (BlockQuery blk), HasHeader blk) ⇒ Tracer m String → Tracers m peer blk e
- type App m peer bytes a = peer → Channel m bytes → m (a, Maybe bytes)
- data Apps m peer bCS bTX bSQ bTM a = Apps {
- aChainSyncServer ∷ App m peer bCS a
- aTxSubmissionServer ∷ App m peer bTX a
- aStateQueryServer ∷ App m peer bSQ a
- aTxMonitorServer ∷ App m peer bTM a
- mkApps ∷ ∀ m addrNTN addrNTC blk e bCS bTX bSQ bTM. (IOLike m, Exception e, ShowProxy blk, ShowProxy (ApplyTxErr blk), ShowProxy (BlockQuery blk), ShowProxy (GenTx blk), ShowProxy (GenTxId blk), ShowQuery (BlockQuery blk)) ⇒ NodeKernel m addrNTN addrNTC blk → Tracers m addrNTC blk e → Codecs blk e m bCS bTX bSQ bTM → Handlers m addrNTC blk → Apps m addrNTC bCS bTX bSQ bTM ()
- responder ∷ NodeToClientVersion → Apps m (ConnectionId peer) b b b b a → OuroborosApplicationWithMinimalCtx 'ResponderMode peer b m Void a
Handlers
data Handlers m peer blk Source #
Protocol handlers for node-to-client (local) communication
Handlers | |
|
mkHandlers ∷ ∀ m blk addrNTN addrNTC. (IOLike m, LedgerSupportsMempool blk, LedgerSupportsProtocol blk, BlockSupportsLedgerQuery blk, ConfigSupportsNode blk) ⇒ NodeKernelArgs m addrNTN addrNTC blk → NodeKernel m addrNTN addrNTC blk → Handlers m addrNTC blk Source #
Codecs
type ClientCodecs blk m = Codecs' blk blk DeserialiseFailure m ByteString ByteString ByteString ByteString Source #
type Codecs blk e m bCS bTX bSQ bTM = Codecs' blk (Serialised blk) e m bCS bTX bSQ bTM Source #
data Codecs' blk serialisedBlk e m bCS bTX bSQ bTM Source #
Node-to-client protocol codecs needed to run Handlers
.
Codecs | |
|
type DefaultCodecs blk m = Codecs' blk (Serialised blk) DeserialiseFailure m ByteString ByteString ByteString ByteString Source #
clientCodecs ∷ ∀ m blk. (MonadST m, SerialiseNodeToClientConstraints blk, ShowQuery (BlockQuery blk), StandardHash blk, Serialise (HeaderHash blk)) ⇒ CodecConfig blk → BlockNodeToClientVersion blk → NodeToClientVersion → ClientCodecs blk m Source #
Protocol codecs for the node-to-client protocols which serialise deserialise blocks in chain-sync/ protocol.
defaultCodecs ∷ ∀ m blk. (MonadST m, SerialiseNodeToClientConstraints blk, ShowQuery (BlockQuery blk), StandardHash blk, Serialise (HeaderHash blk)) ⇒ CodecConfig blk → BlockNodeToClientVersion blk → NodeToClientVersion → DefaultCodecs blk m Source #
Protocol codecs for the node-to-client protocols
We pass the BlockConfig
here, even though it is currently unused. If at any
point we want to introduce local protocols that for example send Byron blocks
or headers across, we will need to have the epoch size, which comes from the
Byron config. Unlike the full TopLevelConfig
, it should not be difficult
for a wallet to construct the BlockConfig
.
NOTE: Somewhat confusingly, pcChainSyncCodec
currently does send Byron
blocks across, but it does not deserialize them (the user of the codec is
itself responsible for doing that), which is why it currently does not need
the config.
Implementation mode: currently none of the consensus encoders/decoders do
anything different based on the version, so _version
is unused; it's just
that not all codecs are used, depending on the version number.
identityCodecs ∷ (Monad m, BlockSupportsLedgerQuery blk) ⇒ Codecs blk CodecFailure m (AnyMessage (ChainSync (Serialised blk) (Point blk) (Tip blk))) (AnyMessage (LocalTxSubmission (GenTx blk) (ApplyTxErr blk))) (AnyMessage (LocalStateQuery blk (Point blk) (Query blk)) State) (AnyMessage (LocalTxMonitor (GenTxId blk) (GenTx blk) SlotNo)) Source #
Identity codecs used in tests.
ClientCodecs
Tracers
type Tracers m peer blk e = Tracers' peer blk e (Tracer m) Source #
A record of Tracer
s for the different protocols.
data Tracers' peer blk e f Source #
Tracers | |
|
nullTracers ∷ Monad m ⇒ Tracers m peer blk e Source #
Use a nullTracer
for each protocol.
showTracers ∷ (Show peer, Show (GenTx blk), Show (GenTxId blk), Show (ApplyTxErr blk), ShowQuery (BlockQuery blk), HasHeader blk) ⇒ Tracer m String → Tracers m peer blk e Source #
Applications
type App m peer bytes a = peer → Channel m bytes → m (a, Maybe bytes) Source #
A node-to-client application
data Apps m peer bCS bTX bSQ bTM a Source #
Applications for the node-to-client (i.e., local) protocols
See MuxApplication
Apps | |
|
mkApps ∷ ∀ m addrNTN addrNTC blk e bCS bTX bSQ bTM. (IOLike m, Exception e, ShowProxy blk, ShowProxy (ApplyTxErr blk), ShowProxy (BlockQuery blk), ShowProxy (GenTx blk), ShowProxy (GenTxId blk), ShowQuery (BlockQuery blk)) ⇒ NodeKernel m addrNTN addrNTC blk → Tracers m addrNTC blk e → Codecs blk e m bCS bTX bSQ bTM → Handlers m addrNTC blk → Apps m addrNTC bCS bTX bSQ bTM () Source #
Construct the NetworkApplication
for the node-to-client protocols
Projections
responder ∷ NodeToClientVersion → Apps m (ConnectionId peer) b b b b a → OuroborosApplicationWithMinimalCtx 'ResponderMode peer b m Void a Source #
A projection from NetworkApplication
to a server-side
OuroborosApplication
for the node-to-client protocols.