ouroboros-network
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Network.PeerSelection.Governor.Monitor

Description

This module contains governor decisions for monitoring tasks:

  • monitoring local root peer config changes
  • monitoring changes to the peer target numbers
  • monitoring the completion of asynchronous governor job
  • monitoring connections
Synopsis

Documentation

targetPeers :: forall (m :: Type -> Type) peeraddr extraState extraFlags extraPeers extraAPI extraCounters peerconn extraDebugState. (MonadSTM m, Ord peeraddr) => PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) Source #

Monitor PeerSelectionTargets, if they change, we just need to update PeerSelectionState, since we return it in a Decision action it will be picked by the governor's peerSelectionGovernorLoop.

jobs :: forall (m :: Type -> Type) extraState extraDebugState extraFlags extraPeers peeraddr peerconn. MonadSTM m => JobPool () m (Completion m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) Source #

Await for the first result from JobPool and return its Decision.

jobVerifyPeerSnapshot :: forall (m :: Type -> Type) extraAPI extraState extraDebugState extraFlags extraPeers peeraddr peerconn. MonadSTM m => LedgerPeerSnapshot -> LedgerPeersConsensusInterface extraAPI m -> Job () m (Completion m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) Source #

This job, which is initiated by monitorLedgerStateJudgement job, verifies whether the provided big ledger pools match up with the ledger state once the node catches up to the slot at which the snapshot was ostensibly taken

connections :: forall (m :: Type -> Type) extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn. (MonadSTM m, Ord peeraddr) => PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) Source #

Monitor connections.

localRoots :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn (m :: Type -> Type). (MonadSTM m, Ord peeraddr, Eq extraFlags) => PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) Source #

Monitor local roots using readLocalRootPeers STM action.

ledgerPeerSnapshotChange :: forall (m :: Type -> Type) extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn extraDebugState. MonadSTM m => (extraState -> extraState) -> PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers peeraddr peerconn) Source #

This job monitors for any changes in the big ledger peer snapshot and flips ledger state judgement private state so that monitoring action can launch jobVerifyPeerSnapshot