decentralized-message-queue
Safe HaskellNone
LanguageHaskell2010

DMQ.NodeToNode

Synopsis

Documentation

data NodeToNodeVersion Source #

Constructors

NodeToNodeV_1 

Instances

Instances details
NFData NodeToNodeVersion Source # 
Instance details

Defined in DMQ.NodeToNode

Methods

rnf :: NodeToNodeVersion -> () #

Bounded NodeToNodeVersion Source # 
Instance details

Defined in DMQ.NodeToNode

Enum NodeToNodeVersion Source # 
Instance details

Defined in DMQ.NodeToNode

Generic NodeToNodeVersion Source # 
Instance details

Defined in DMQ.NodeToNode

Associated Types

type Rep NodeToNodeVersion 
Instance details

Defined in DMQ.NodeToNode

type Rep NodeToNodeVersion = D1 ('MetaData "NodeToNodeVersion" "DMQ.NodeToNode" "decentralized-message-queue-0.1.0.0-inplace" 'False) (C1 ('MetaCons "NodeToNodeV_1" 'PrefixI 'False) (U1 :: Type -> Type))
Show NodeToNodeVersion Source # 
Instance details

Defined in DMQ.NodeToNode

Eq NodeToNodeVersion Source # 
Instance details

Defined in DMQ.NodeToNode

Ord NodeToNodeVersion Source # 
Instance details

Defined in DMQ.NodeToNode

type Rep NodeToNodeVersion Source # 
Instance details

Defined in DMQ.NodeToNode

type Rep NodeToNodeVersion = D1 ('MetaData "NodeToNodeVersion" "DMQ.NodeToNode" "decentralized-message-queue-0.1.0.0-inplace" 'False) (C1 ('MetaCons "NodeToNodeV_1" 'PrefixI 'False) (U1 :: Type -> Type))

data NodeToNodeVersionData Source #

Version data for NodeToNode protocols

This data type is inpired by the one defined in 'ouroboros-network-api', however, it is redefined here to tie it to our custom NodeToNodeVersion and to avoid divergences.

mapNtNDMQtoOuroboros :: NodeToNodeVersion -> NodeToNodeVersion Source #

Map between DMQ NTNVersion and Ouroboros NTNVersion

Useful for reusing codecs and other functions

type ClientApp addr bytes (m :: Type -> Type) a = NodeToNodeVersion -> ExpandedInitiatorContext addr m -> Channel m bytes -> m (a, Maybe bytes) Source #

type ServerApp addr bytes (m :: Type -> Type) a = NodeToNodeVersion -> ResponderContext addr -> Channel m bytes -> m (a, Maybe bytes) Source #

data Apps addr bKA bPS (m :: Type -> Type) a b Source #

Constructors

Apps 

Fields

ntnApps :: forall (m :: Type -> Type) addr. (Alternative (STM m), MonadAsync m, MonadFork m, MonadMask m, MonadMVar m, MonadST m, MonadThread m, MonadThrow (STM m), MonadTimer m, Ord addr, Hashable addr) => NodeKernel addr m -> Codecs addr m -> LimitsAndTimeouts addr -> Apps addr ByteString ByteString m () () Source #

data Protocols (appType :: Mode) initiatorCtx responderCtx bytes (m :: Type -> Type) a b Source #

Constructors

Protocols 

Fields

nodeToNodeProtocols Source #

Arguments

:: forall addr (appType :: Mode) initiatorCtx responderCtx bytes (m :: Type -> Type) a b. LimitsAndTimeouts addr 
-> Protocols appType initiatorCtx responderCtx bytes m a b 
-> NodeToNodeVersion

negotiated version number

-> NodeToNodeVersionData

negotiated version data

-> OuroborosBundle appType initiatorCtx responderCtx bytes m a b 

initiatorProtocols :: forall addr bytes (m :: Type -> Type) a b. LimitsAndTimeouts addr -> Apps addr bytes bytes m a b -> NodeToNodeVersion -> NodeToNodeVersionData -> OuroborosBundleWithExpandedCtx 'InitiatorMode addr bytes m a Void Source #

initiatorAndResponderProtocols :: forall addr bytes (m :: Type -> Type) a b. LimitsAndTimeouts addr -> Apps addr bytes bytes m a b -> NodeToNodeVersion -> NodeToNodeVersionData -> OuroborosBundleWithExpandedCtx 'InitiatorResponderMode addr bytes m a b Source #

dmqCodecs :: forall (m :: Type -> Type) addr. MonadST m => (addr -> Encoding) -> (forall s. Decoder s addr) -> Codecs addr m Source #