Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ouroboros.Network.NodeToNode
Description
This is the starting point for a module that will bring together the overall node to node protocol, as a collection of mini-protocols.
Synopsis
- nodeToNodeProtocols :: MiniProtocolParameters -> NodeToNodeProtocols muxMode initiatorCtx responderCtx bytes m a b -> NodeToNodeVersion -> PeerSharing -> OuroborosBundle muxMode initiatorCtx responderCtx bytes m a b
- data NodeToNodeProtocols appType initiatorCtx responderCtx bytes m a b = NodeToNodeProtocols {
- chainSyncProtocol :: RunMiniProtocol appType initiatorCtx responderCtx bytes m a b
- blockFetchProtocol :: RunMiniProtocol appType initiatorCtx responderCtx bytes m a b
- txSubmissionProtocol :: RunMiniProtocol appType initiatorCtx responderCtx bytes m a b
- keepAliveProtocol :: RunMiniProtocol appType initiatorCtx responderCtx bytes m a b
- peerSharingProtocol :: RunMiniProtocol appType initiatorCtx responderCtx bytes m a b
- type NodeToNodeProtocolsWithExpandedCtx appType ntnAddr bytes m a b = NodeToNodeProtocols appType (ExpandedInitiatorContext ntnAddr m) (ResponderContext ntnAddr) bytes m a b
- type NodeToNodeProtocolsWithMinimalCtx appType ntnAddr bytes m a b = NodeToNodeProtocols appType (MinimalInitiatorContext ntnAddr) (ResponderContext ntnAddr) bytes m a b
- data MiniProtocolParameters = MiniProtocolParameters {}
- chainSyncProtocolLimits :: MiniProtocolParameters -> MiniProtocolLimits
- blockFetchProtocolLimits :: MiniProtocolParameters -> MiniProtocolLimits
- txSubmissionProtocolLimits :: MiniProtocolParameters -> MiniProtocolLimits
- keepAliveProtocolLimits :: MiniProtocolParameters -> MiniProtocolLimits
- defaultMiniProtocolParameters :: MiniProtocolParameters
- data NodeToNodeVersion
- data NodeToNodeVersionData = NodeToNodeVersionData {
- networkMagic :: !NetworkMagic
- diffusionMode :: !DiffusionMode
- peerSharing :: !PeerSharing
- query :: !Bool
- data NetworkConnectTracers addr vNumber = NetworkConnectTracers {
- nctMuxTracer :: Tracer IO (WithMuxBearer (ConnectionId addr) MuxTrace)
- nctHandshakeTracer :: Tracer IO (WithMuxBearer (ConnectionId addr) (TraceSendRecv (Handshake vNumber Term)))
- nullNetworkConnectTracers :: NetworkConnectTracers addr vNumber
- connectTo :: Snocket IO Socket SockAddr -> NetworkConnectTracers SockAddr NodeToNodeVersion -> Versions NodeToNodeVersion NodeToNodeVersionData (OuroborosApplicationWithMinimalCtx InitiatorMode SockAddr ByteString IO a b) -> Maybe SockAddr -> SockAddr -> IO ()
- data NetworkServerTracers addr vNumber = NetworkServerTracers {
- nstMuxTracer :: Tracer IO (WithMuxBearer (ConnectionId addr) MuxTrace)
- nstHandshakeTracer :: Tracer IO (WithMuxBearer (ConnectionId addr) (TraceSendRecv (Handshake vNumber Term)))
- nstErrorPolicyTracer :: Tracer IO (WithAddr addr ErrorPolicyTrace)
- nstAcceptPolicyTracer :: Tracer IO AcceptConnectionsPolicyTrace
- nullNetworkServerTracers :: NetworkServerTracers addr vNumber
- data NetworkMutableState addr = NetworkMutableState {
- nmsConnectionTable :: ConnectionTable IO addr
- nmsPeerStates :: StrictTVar IO (PeerStates IO addr)
- data AcceptedConnectionsLimit = AcceptedConnectionsLimit {
- acceptedConnectionsHardLimit :: !Word32
- acceptedConnectionsSoftLimit :: !Word32
- acceptedConnectionsDelay :: !DiffTime
- newNetworkMutableState :: IO (NetworkMutableState addr)
- newNetworkMutableStateSTM :: STM (NetworkMutableState addr)
- cleanNetworkMutableState :: NetworkMutableState addr -> IO ()
- withServer :: SocketSnocket -> NetworkServerTracers SockAddr NodeToNodeVersion -> NetworkMutableState SockAddr -> AcceptedConnectionsLimit -> Socket -> Versions NodeToNodeVersion NodeToNodeVersionData (OuroborosApplicationWithMinimalCtx ResponderMode SockAddr ByteString IO a b) -> ErrorPolicies -> IO Void
- data PeerAdvertise
- data PeerSelectionTargets = PeerSelectionTargets {}
- data IPSubscriptionTarget = IPSubscriptionTarget {
- ispIps :: ![SockAddr]
- ispValency :: !Int
- type NetworkIPSubscriptionTracers addr vNumber = NetworkSubscriptionTracers WithIPList addr vNumber
- data NetworkSubscriptionTracers withIPList addr vNumber = NetworkSubscriptionTracers {
- nsMuxTracer :: Tracer IO (WithMuxBearer (ConnectionId addr) MuxTrace)
- nsHandshakeTracer :: Tracer IO (WithMuxBearer (ConnectionId addr) (TraceSendRecv (Handshake vNumber Term)))
- nsErrorPolicyTracer :: Tracer IO (WithAddr addr ErrorPolicyTrace)
- nsSubscriptionTracer :: Tracer IO (withIPList (SubscriptionTrace addr))
- nullNetworkSubscriptionTracers :: NetworkSubscriptionTracers withIPList addr vNumber
- data SubscriptionParams a target = SubscriptionParams {
- spLocalAddresses :: LocalAddresses SockAddr
- spConnectionAttemptDelay :: SockAddr -> Maybe DiffTime
- spErrorPolicies :: ErrorPolicies
- spSubscriptionTarget :: target
- type IPSubscriptionParams a = SubscriptionParams a IPSubscriptionTarget
- ipSubscriptionWorker :: forall mode x y. HasInitiator mode ~ True => SocketSnocket -> NetworkIPSubscriptionTracers SockAddr NodeToNodeVersion -> NetworkMutableState SockAddr -> IPSubscriptionParams () -> Versions NodeToNodeVersion NodeToNodeVersionData (OuroborosApplicationWithMinimalCtx mode SockAddr ByteString IO x y) -> IO Void
- data DnsSubscriptionTarget = DnsSubscriptionTarget {
- dstDomain :: !Domain
- dstPort :: !PortNumber
- dstValency :: !Int
- type DnsSubscriptionParams a = SubscriptionParams a DnsSubscriptionTarget
- data NetworkDNSSubscriptionTracers vNumber addr = NetworkDNSSubscriptionTracers {
- ndstMuxTracer :: Tracer IO (WithMuxBearer (ConnectionId addr) MuxTrace)
- ndstHandshakeTracer :: Tracer IO (WithMuxBearer (ConnectionId addr) (TraceSendRecv (Handshake vNumber Term)))
- ndstErrorPolicyTracer :: Tracer IO (WithAddr addr ErrorPolicyTrace)
- ndstSubscriptionTracer :: Tracer IO (WithDomainName (SubscriptionTrace addr))
- ndstDnsTracer :: Tracer IO (WithDomainName DnsTrace)
- nullNetworkDNSSubscriptionTracers :: NetworkDNSSubscriptionTracers vNumber peerid
- dnsSubscriptionWorker :: forall mode x y. HasInitiator mode ~ True => SocketSnocket -> NetworkDNSSubscriptionTracers NodeToNodeVersion SockAddr -> NetworkMutableState SockAddr -> DnsSubscriptionParams () -> Versions NodeToNodeVersion NodeToNodeVersionData (OuroborosApplicationWithMinimalCtx mode SockAddr ByteString IO x y) -> IO Void
- newtype Versions vNum vData r = Versions {
- getVersions :: Map vNum (Version vData r)
- data DiffusionMode
- simpleSingletonVersions :: vNum -> vData -> r -> Versions vNum vData r
- foldMapVersions :: (Ord vNum, Foldable f, HasCallStack) => (x -> Versions vNum extra r) -> f x -> Versions vNum extra r
- combineVersions :: (Ord vNum, Foldable f, HasCallStack) => f (Versions vNum extra r) -> Versions vNum extra r
- nodeToNodeHandshakeCodec :: forall (m :: Type -> Type). MonadST m => Codec (Handshake NodeToNodeVersion Term) DeserialiseFailure m ByteString
- nodeToNodeVersionCodec :: CodecCBORTerm (Text, Maybe Int) NodeToNodeVersion
- nodeToNodeCodecCBORTerm :: NodeToNodeVersion -> CodecCBORTerm Text NodeToNodeVersionData
- data ExpandedInitiatorContext addr (m :: Type -> Type) = ExpandedInitiatorContext {
- eicConnectionId :: !(ConnectionId addr)
- eicControlMessage :: !(ControlMessageSTM m)
- eicIsBigLedgerPeer :: !IsBigLedgerPeer
- newtype MinimalInitiatorContext addr = MinimalInitiatorContext {
- micConnectionId :: ConnectionId addr
- newtype ResponderContext addr = ResponderContext {
- rcConnectionId :: ConnectionId addr
- data ConnectionId addr = ConnectionId {
- localAddress :: !addr
- remoteAddress :: !addr
- data ControlMessage
- type ControlMessageSTM (m :: Type -> Type) = STM m ControlMessage
- type RemoteAddress = SockAddr
- type RemoteConnectionId = ConnectionId RemoteAddress
- data IsBigLedgerPeer
- data ProtocolLimitFailure
- data Handshake (vNumber :: k) (vParams :: k1)
- data LocalAddresses addr = LocalAddresses {}
- data Socket
- data ExceptionInHandler where
- ExceptionInHandler :: forall peerAddr. (Typeable peerAddr, Show peerAddr) => !peerAddr -> !SomeException -> ExceptionInHandler
- data ErrorPolicies = ErrorPolicies {}
- remoteNetworkErrorPolicy :: ErrorPolicies
- localNetworkErrorPolicy :: ErrorPolicies
- nullErrorPolicies :: ErrorPolicies
- data ErrorPolicy where
- ErrorPolicy :: forall e. Exception e => (e -> Maybe (SuspendDecision DiffTime)) -> ErrorPolicy
- data SuspendDecision t
- = SuspendPeer !t !t
- | SuspendConsumer !t
- | Throw
- data AcceptConnectionsPolicyTrace
- data TraceSendRecv ps where
- TraceSendMsg :: forall ps. AnyMessageAndAgency ps -> TraceSendRecv ps
- TraceRecvMsg :: forall ps. AnyMessageAndAgency ps -> TraceSendRecv ps
- data SubscriptionTrace addr
- = SubscriptionTraceConnectStart addr
- | SubscriptionTraceConnectEnd addr ConnectResult
- | Exception e => SubscriptionTraceSocketAllocationException addr e
- | Exception e => SubscriptionTraceConnectException addr e
- | Exception e => SubscriptionTraceApplicationException addr e
- | SubscriptionTraceTryConnectToPeer addr
- | SubscriptionTraceSkippingPeer addr
- | SubscriptionTraceSubscriptionRunning
- | SubscriptionTraceSubscriptionWaiting Int
- | SubscriptionTraceSubscriptionFailed
- | SubscriptionTraceSubscriptionWaitingNewConnection DiffTime
- | SubscriptionTraceStart Int
- | SubscriptionTraceRestart DiffTime Int Int
- | SubscriptionTraceConnectionExist addr
- | SubscriptionTraceUnsupportedRemoteAddr addr
- | SubscriptionTraceMissingLocalAddress
- | SubscriptionTraceAllocateSocket addr
- | SubscriptionTraceCloseSocket addr
- data DnsTrace
- = DnsTraceLookupException SomeException
- | DnsTraceLookupAError DNSError
- | DnsTraceLookupAAAAError DNSError
- | DnsTraceLookupIPv6First
- | DnsTraceLookupIPv4First
- | DnsTraceLookupAResult [SockAddr]
- | DnsTraceLookupAAAAResult [SockAddr]
- data ErrorPolicyTrace
- = ErrorPolicySuspendPeer (Maybe (ConnectionOrApplicationExceptionTrace SomeException)) DiffTime DiffTime
- | ErrorPolicySuspendConsumer (Maybe (ConnectionOrApplicationExceptionTrace SomeException)) DiffTime
- | ErrorPolicyLocalNodeError (ConnectionOrApplicationExceptionTrace SomeException)
- | ErrorPolicyResumePeer
- | ErrorPolicyKeepSuspended
- | ErrorPolicyResumeConsumer
- | ErrorPolicyResumeProducer
- | ErrorPolicyUnhandledApplicationException SomeException
- | ErrorPolicyUnhandledConnectionException SomeException
- | ErrorPolicyAcceptException IOException
- data WithIPList a = WithIPList {
- wilSrc :: LocalAddresses SockAddr
- wilDsts :: [SockAddr]
- wilEvent :: a
- data WithDomainName a = WithDomainName {}
- data WithAddr addr a = WithAddr {}
- type HandshakeTr ntnAddr ntnVersion = WithMuxBearer (ConnectionId ntnAddr) (TraceSendRecv (Handshake ntnVersion Term))
- chainSyncMiniProtocolNum :: MiniProtocolNum
- blockFetchMiniProtocolNum :: MiniProtocolNum
- txSubmissionMiniProtocolNum :: MiniProtocolNum
- keepAliveMiniProtocolNum :: MiniProtocolNum
- peerSharingMiniProtocolNum :: MiniProtocolNum
Documentation
Arguments
:: MiniProtocolParameters | |
-> NodeToNodeProtocols muxMode initiatorCtx responderCtx bytes m a b | |
-> NodeToNodeVersion | |
-> PeerSharing | Node's own PeerSharing value |
-> OuroborosBundle muxMode initiatorCtx responderCtx bytes m a b |
Make an OuroborosApplication
for the bundle of mini-protocols that
make up the overall node-to-node protocol.
This function specifies the wire format protocol numbers.
The application specific protocol numbers start from 2. The
is reserved for the MiniProtocolNum
0Handshake
protocol, while
is reserved for DeltaQ messages.
MiniProtocolNum
1Handshake
protocol is not included in NodeToNodeProtocols
as it runs
before mux is started but it reusing MuxBearer
to send and receive
messages. Only when the handshake protocol succeeds, we will know which
protocols to run / multiplex.
These are chosen to not overlap with the node to client protocol numbers (and the handshake protocol number). This is not essential for correctness, but is helpful to allow a single shared implementation of tools that can analyse both protocols, e.g. wireshark plugins.
data NodeToNodeProtocols appType initiatorCtx responderCtx bytes m a b Source #
Constructors
NodeToNodeProtocols | |
Fields
|
type NodeToNodeProtocolsWithExpandedCtx appType ntnAddr bytes m a b = NodeToNodeProtocols appType (ExpandedInitiatorContext ntnAddr m) (ResponderContext ntnAddr) bytes m a b Source #
type NodeToNodeProtocolsWithMinimalCtx appType ntnAddr bytes m a b = NodeToNodeProtocols appType (MinimalInitiatorContext ntnAddr) (ResponderContext ntnAddr) bytes m a b Source #
data MiniProtocolParameters Source #
Constructors
MiniProtocolParameters | |
Fields
|
chainSyncProtocolLimits :: MiniProtocolParameters -> MiniProtocolLimits Source #
blockFetchProtocolLimits :: MiniProtocolParameters -> MiniProtocolLimits Source #
txSubmissionProtocolLimits :: MiniProtocolParameters -> MiniProtocolLimits Source #
keepAliveProtocolLimits :: MiniProtocolParameters -> MiniProtocolLimits Source #
data NodeToNodeVersion #
Constructors
NodeToNodeV_7 | |
NodeToNodeV_8 | |
NodeToNodeV_9 | |
NodeToNodeV_10 | |
NodeToNodeV_11 | |
NodeToNodeV_12 | |
NodeToNodeV_13 |
Instances
data NodeToNodeVersionData #
Constructors
NodeToNodeVersionData | |
Fields
|
Instances
Show NodeToNodeVersionData | |
Defined in Ouroboros.Network.NodeToNode.Version | |
Eq NodeToNodeVersionData | |
Defined in Ouroboros.Network.NodeToNode.Version Methods (==) :: NodeToNodeVersionData -> NodeToNodeVersionData -> Bool Source # (/=) :: NodeToNodeVersionData -> NodeToNodeVersionData -> Bool Source # | |
Acceptable NodeToNodeVersionData | |
Defined in Ouroboros.Network.NodeToNode.Version Methods acceptableVersion :: NodeToNodeVersionData -> NodeToNodeVersionData -> Accept NodeToNodeVersionData | |
Queryable NodeToNodeVersionData | |
Defined in Ouroboros.Network.NodeToNode.Version Methods |
data NetworkConnectTracers addr vNumber #
Constructors
NetworkConnectTracers | |
Fields
|
nullNetworkConnectTracers :: NetworkConnectTracers addr vNumber #
connectTo :: Snocket IO Socket SockAddr -> NetworkConnectTracers SockAddr NodeToNodeVersion -> Versions NodeToNodeVersion NodeToNodeVersionData (OuroborosApplicationWithMinimalCtx InitiatorMode SockAddr ByteString IO a b) -> Maybe SockAddr -> SockAddr -> IO () Source #
A specialised version of
.connectToNode
data NetworkServerTracers addr vNumber #
Constructors
NetworkServerTracers | |
Fields
|
nullNetworkServerTracers :: NetworkServerTracers addr vNumber #
data NetworkMutableState addr #
Constructors
NetworkMutableState | |
Fields
|
data AcceptedConnectionsLimit #
Constructors
AcceptedConnectionsLimit | |
Fields
|
Instances
newNetworkMutableState :: IO (NetworkMutableState addr) #
newNetworkMutableStateSTM :: STM (NetworkMutableState addr) #
cleanNetworkMutableState :: NetworkMutableState addr -> IO () #
Arguments
:: SocketSnocket | |
-> NetworkServerTracers SockAddr NodeToNodeVersion | |
-> NetworkMutableState SockAddr | |
-> AcceptedConnectionsLimit | |
-> Socket | a configured socket to be used be the server. The server will call
|
-> Versions NodeToNodeVersion NodeToNodeVersionData (OuroborosApplicationWithMinimalCtx ResponderMode SockAddr ByteString IO a b) | |
-> ErrorPolicies | |
-> IO Void |
A specialised version of
.
It forks a thread which runs an accept loop (server thread):withServerNode
- when the server thread throws an exception the main thread rethrows
it (by
wait
) - when an async exception is thrown to kill the main thread the server thread
will be cancelled as well (by
withAsync
)
P2P Governor
data PeerAdvertise #
Constructors
DoNotAdvertisePeer | |
DoAdvertisePeer |
Instances
data PeerSelectionTargets Source #
Adjustable targets for the peer selection mechanism.
These are used by the peer selection governor as targets. They are used by the peer churn governor loop as knobs to adjust, to influence the peer selection governor.
The known, established and active peer targets are targets both from below and from above: the governor will attempt to grow or shrink the sets to hit these targets.
Unlike the other targets, the root peer target is "one sided", it is only a target from below. The governor does not try to shrink the root set to hit it, it simply stops looking for more.
There is also an implicit target that enough local root peers are selected as active. This comes from the configuration for local roots, and is not an independently adjustable target.
Constructors
PeerSelectionTargets | |
Fields
|
Instances
Show PeerSelectionTargets Source # | |
Eq PeerSelectionTargets Source # | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods (==) :: PeerSelectionTargets -> PeerSelectionTargets -> Bool Source # (/=) :: PeerSelectionTargets -> PeerSelectionTargets -> Bool Source # |
Subscription Workers
IP subscription worker
data IPSubscriptionTarget #
Constructors
IPSubscriptionTarget | |
Fields
|
Instances
Show IPSubscriptionTarget | |
Defined in Ouroboros.Network.Subscription.Ip | |
Eq IPSubscriptionTarget | |
Defined in Ouroboros.Network.Subscription.Ip Methods (==) :: IPSubscriptionTarget -> IPSubscriptionTarget -> Bool Source # (/=) :: IPSubscriptionTarget -> IPSubscriptionTarget -> Bool Source # |
type NetworkIPSubscriptionTracers addr vNumber = NetworkSubscriptionTracers WithIPList addr vNumber Source #
data NetworkSubscriptionTracers withIPList addr vNumber Source #
IP subscription tracers.
Constructors
NetworkSubscriptionTracers | |
Fields
|
nullNetworkSubscriptionTracers :: NetworkSubscriptionTracers withIPList addr vNumber Source #
data SubscriptionParams a target #
Constructors
SubscriptionParams | |
Fields
|
ipSubscriptionWorker :: forall mode x y. HasInitiator mode ~ True => SocketSnocket -> NetworkIPSubscriptionTracers SockAddr NodeToNodeVersion -> NetworkMutableState SockAddr -> IPSubscriptionParams () -> Versions NodeToNodeVersion NodeToNodeVersionData (OuroborosApplicationWithMinimalCtx mode SockAddr ByteString IO x y) -> IO Void Source #
ipSubscriptionWorker
which starts given application versions on each
established connection.
DNS subscription worker
data DnsSubscriptionTarget #
Constructors
DnsSubscriptionTarget | |
Fields
|
Instances
Show DnsSubscriptionTarget | |
Defined in Ouroboros.Network.Subscription.Dns | |
Eq DnsSubscriptionTarget | |
Defined in Ouroboros.Network.Subscription.Dns Methods (==) :: DnsSubscriptionTarget -> DnsSubscriptionTarget -> Bool Source # (/=) :: DnsSubscriptionTarget -> DnsSubscriptionTarget -> Bool Source # |
data NetworkDNSSubscriptionTracers vNumber addr Source #
DNS subscription tracers.
Constructors
NetworkDNSSubscriptionTracers | |
Fields
|
nullNetworkDNSSubscriptionTracers :: NetworkDNSSubscriptionTracers vNumber peerid Source #
dnsSubscriptionWorker :: forall mode x y. HasInitiator mode ~ True => SocketSnocket -> NetworkDNSSubscriptionTracers NodeToNodeVersion SockAddr -> NetworkMutableState SockAddr -> DnsSubscriptionParams () -> Versions NodeToNodeVersion NodeToNodeVersionData (OuroborosApplicationWithMinimalCtx mode SockAddr ByteString IO x y) -> IO Void Source #
dnsSubscriptionWorker
which starts given application versions on each
established connection.
Versions
newtype Versions vNum vData r #
Constructors
Versions | |
Fields
|
data DiffusionMode #
Instances
Show DiffusionMode | |
Defined in Ouroboros.Network.NodeToNode.Version | |
Eq DiffusionMode | |
Defined in Ouroboros.Network.NodeToNode.Version Methods (==) :: DiffusionMode -> DiffusionMode -> Bool Source # (/=) :: DiffusionMode -> DiffusionMode -> Bool Source # | |
Ord DiffusionMode | |
Defined in Ouroboros.Network.NodeToNode.Version Methods compare :: DiffusionMode -> DiffusionMode -> Ordering Source # (<) :: DiffusionMode -> DiffusionMode -> Bool Source # (<=) :: DiffusionMode -> DiffusionMode -> Bool Source # (>) :: DiffusionMode -> DiffusionMode -> Bool Source # (>=) :: DiffusionMode -> DiffusionMode -> Bool Source # max :: DiffusionMode -> DiffusionMode -> DiffusionMode Source # min :: DiffusionMode -> DiffusionMode -> DiffusionMode Source # |
simpleSingletonVersions :: vNum -> vData -> r -> Versions vNum vData r #
foldMapVersions :: (Ord vNum, Foldable f, HasCallStack) => (x -> Versions vNum extra r) -> f x -> Versions vNum extra r #
combineVersions :: (Ord vNum, Foldable f, HasCallStack) => f (Versions vNum extra r) -> Versions vNum extra r #
Codecs
nodeToNodeHandshakeCodec :: forall (m :: Type -> Type). MonadST m => Codec (Handshake NodeToNodeVersion Term) DeserialiseFailure m ByteString #
nodeToNodeVersionCodec :: CodecCBORTerm (Text, Maybe Int) NodeToNodeVersion #
nodeToNodeCodecCBORTerm :: NodeToNodeVersion -> CodecCBORTerm Text NodeToNodeVersionData #
Re-exports
data ExpandedInitiatorContext addr (m :: Type -> Type) #
Constructors
ExpandedInitiatorContext | |
Fields
|
newtype MinimalInitiatorContext addr #
Constructors
MinimalInitiatorContext | |
Fields
|
Instances
Functor MinimalInitiatorContext | |
Defined in Ouroboros.Network.Context Methods fmap :: (a -> b) -> MinimalInitiatorContext a -> MinimalInitiatorContext b Source # (<$) :: a -> MinimalInitiatorContext b -> MinimalInitiatorContext a Source # |
newtype ResponderContext addr #
Constructors
ResponderContext | |
Fields
|
Instances
Functor ResponderContext | |
Defined in Ouroboros.Network.Context Methods fmap :: (a -> b) -> ResponderContext a -> ResponderContext b Source # (<$) :: a -> ResponderContext b -> ResponderContext a Source # |
data ConnectionId addr #
Constructors
ConnectionId | |
Fields
|
Instances
data ControlMessage #
Instances
Show ControlMessage | |
Defined in Ouroboros.Network.ControlMessage | |
Eq ControlMessage | |
Defined in Ouroboros.Network.ControlMessage Methods (==) :: ControlMessage -> ControlMessage -> Bool Source # (/=) :: ControlMessage -> ControlMessage -> Bool Source # |
type ControlMessageSTM (m :: Type -> Type) = STM m ControlMessage #
type RemoteAddress = SockAddr Source #
data IsBigLedgerPeer #
Constructors
IsBigLedgerPeer | |
IsNotBigLedgerPeer |
Instances
Eq IsBigLedgerPeer | |
Defined in Ouroboros.Network.PeerSelection.LedgerPeers.Type Methods (==) :: IsBigLedgerPeer -> IsBigLedgerPeer -> Bool Source # (/=) :: IsBigLedgerPeer -> IsBigLedgerPeer -> Bool Source # |
data ProtocolLimitFailure #
Instances
data Handshake (vNumber :: k) (vParams :: k1) #
Instances
ShowProxy (Handshake vNumber vParams :: Type) | |
Defined in Ouroboros.Network.Protocol.Handshake.Type | |
Show (ClientHasAgency st) | |
Show (ServerHasAgency st) | |
(Show vNumber, Show vParams) => Show (Message (Handshake vNumber vParams) from to) | |
Protocol (Handshake vNumber vParams) | |
Defined in Ouroboros.Network.Protocol.Handshake.Type Associated Types data Message (Handshake vNumber vParams) st st' data ClientHasAgency st data ServerHasAgency st data NobodyHasAgency st Methods exclusionLemma_ClientAndServerHaveAgency :: forall (st :: Handshake vNumber vParams). ClientHasAgency st -> ServerHasAgency st -> Void exclusionLemma_NobodyAndClientHaveAgency :: forall (st :: Handshake vNumber vParams). NobodyHasAgency st -> ClientHasAgency st -> Void exclusionLemma_NobodyAndServerHaveAgency :: forall (st :: Handshake vNumber vParams). NobodyHasAgency st -> ServerHasAgency st -> Void | |
data ClientHasAgency (st :: Handshake vNumber vParams) | |
Defined in Ouroboros.Network.Protocol.Handshake.Type data ClientHasAgency (st :: Handshake vNumber vParams) where
| |
data Message (Handshake vNumber vParams) (from :: Handshake vNumber vParams) (to :: Handshake vNumber vParams) | |
Defined in Ouroboros.Network.Protocol.Handshake.Type data Message (Handshake vNumber vParams) (from :: Handshake vNumber vParams) (to :: Handshake vNumber vParams) where
| |
data NobodyHasAgency (st :: Handshake vNumber vParams) | |
Defined in Ouroboros.Network.Protocol.Handshake.Type | |
data ServerHasAgency (st :: Handshake vNumber vParams) | |
Defined in Ouroboros.Network.Protocol.Handshake.Type data ServerHasAgency (st :: Handshake vNumber vParams) where
|
data LocalAddresses addr #
Instances
Semigroup (LocalAddresses addr) | |
Defined in Ouroboros.Network.Subscription.Worker Methods (<>) :: LocalAddresses addr -> LocalAddresses addr -> LocalAddresses addr Source # sconcat :: NonEmpty (LocalAddresses addr) -> LocalAddresses addr Source # stimes :: Integral b => b -> LocalAddresses addr -> LocalAddresses addr Source # | |
Show addr => Show (LocalAddresses addr) | |
Defined in Ouroboros.Network.Subscription.Worker | |
Eq addr => Eq (LocalAddresses addr) | |
Defined in Ouroboros.Network.Subscription.Worker Methods (==) :: LocalAddresses addr -> LocalAddresses addr -> Bool Source # (/=) :: LocalAddresses addr -> LocalAddresses addr -> Bool Source # |
Instances
Exceptions
data ExceptionInHandler where #
Constructors
ExceptionInHandler :: forall peerAddr. (Typeable peerAddr, Show peerAddr) => !peerAddr -> !SomeException -> ExceptionInHandler |
Instances
Error Policies and Peer state
data ErrorPolicies #
Constructors
ErrorPolicies | |
Fields |
Instances
Semigroup ErrorPolicies | |
Defined in Ouroboros.Network.ErrorPolicy Methods (<>) :: ErrorPolicies -> ErrorPolicies -> ErrorPolicies Source # sconcat :: NonEmpty ErrorPolicies -> ErrorPolicies Source # stimes :: Integral b => b -> ErrorPolicies -> ErrorPolicies Source # |
remoteNetworkErrorPolicy :: ErrorPolicies Source #
A minimal error policy for remote peers, which only handles exceptions raised by `ouroboros-network`.
localNetworkErrorPolicy :: ErrorPolicies Source #
Error policy for local clients. This is equivalent to
nullErrorPolicies
, but explicit in the errors which can be caught.
We are very permissive here, and very strict in the
networkErrorPolicy
. After any failure the client will be
killed and not penalised by this policy. This allows to restart the local
client without a delay.
data ErrorPolicy where #
Constructors
ErrorPolicy :: forall e. Exception e => (e -> Maybe (SuspendDecision DiffTime)) -> ErrorPolicy |
Instances
Show ErrorPolicy | |
Defined in Ouroboros.Network.ErrorPolicy |
data SuspendDecision t #
Constructors
SuspendPeer !t !t | |
SuspendConsumer !t | |
Throw |
Instances
Traces
data AcceptConnectionsPolicyTrace #
Constructors
ServerTraceAcceptConnectionRateLimiting DiffTime Int | |
ServerTraceAcceptConnectionHardLimit Word32 | |
ServerTraceAcceptConnectionResume Int |
Instances
data TraceSendRecv ps where #
Constructors
TraceSendMsg :: forall ps. AnyMessageAndAgency ps -> TraceSendRecv ps | |
TraceRecvMsg :: forall ps. AnyMessageAndAgency ps -> TraceSendRecv ps |
Instances
Show (AnyMessageAndAgency ps) => Show (TraceSendRecv ps) | |
Defined in Ouroboros.Network.Driver.Simple |
data SubscriptionTrace addr #
Constructors
Instances
Show addr => Show (SubscriptionTrace addr) | |
Defined in Ouroboros.Network.Subscription.Worker |
Constructors
DnsTraceLookupException SomeException | |
DnsTraceLookupAError DNSError | |
DnsTraceLookupAAAAError DNSError | |
DnsTraceLookupIPv6First | |
DnsTraceLookupIPv4First | |
DnsTraceLookupAResult [SockAddr] | |
DnsTraceLookupAAAAResult [SockAddr] |
data ErrorPolicyTrace #
Constructors
ErrorPolicySuspendPeer (Maybe (ConnectionOrApplicationExceptionTrace SomeException)) DiffTime DiffTime | |
ErrorPolicySuspendConsumer (Maybe (ConnectionOrApplicationExceptionTrace SomeException)) DiffTime | |
ErrorPolicyLocalNodeError (ConnectionOrApplicationExceptionTrace SomeException) | |
ErrorPolicyResumePeer | |
ErrorPolicyKeepSuspended | |
ErrorPolicyResumeConsumer | |
ErrorPolicyResumeProducer | |
ErrorPolicyUnhandledApplicationException SomeException | |
ErrorPolicyUnhandledConnectionException SomeException | |
ErrorPolicyAcceptException IOException |
Instances
Show ErrorPolicyTrace | |
Defined in Ouroboros.Network.ErrorPolicy |
data WithIPList a #
Constructors
WithIPList | |
Fields
|
Instances
Show a => Show (WithIPList a) | |
Defined in Ouroboros.Network.Subscription.Ip |
data WithDomainName a #
Constructors
WithDomainName | |
Instances
Show a => Show (WithDomainName a) | |
Defined in Ouroboros.Network.Subscription.Dns |
type HandshakeTr ntnAddr ntnVersion = WithMuxBearer (ConnectionId ntnAddr) (TraceSendRecv (Handshake ntnVersion Term)) Source #
For Consensus ThreadNet Tests
chainSyncMiniProtocolNum :: MiniProtocolNum Source #
blockFetchMiniProtocolNum :: MiniProtocolNum Source #
txSubmissionMiniProtocolNum :: MiniProtocolNum Source #
keepAliveMiniProtocolNum :: MiniProtocolNum Source #
peerSharingMiniProtocolNum :: MiniProtocolNum Source #
Orphan instances
ShowProxy RemoteAddress Source # | |
Methods showProxy :: Proxy RemoteAddress -> String |