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
  • targetPeers :: forall (m :: Type -> Type) peeraddr extraState extraFlags extraPeers extraAPI extraCounters peerconn extraDebugState extraTrace. (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 extraTrace peeraddr peerconn)
  • jobs :: forall (m :: Type -> Type) extraState extraDebugState extraFlags extraPeers extraTrace peeraddr peerconn. MonadSTM m => JobPool () m (Completion m extraState extraDebugState extraFlags extraPeers extraTrace peeraddr peerconn) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers extraTrace peeraddr peerconn)
  • connections :: forall (m :: Type -> Type) extraState extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr peerconn. (MonadSTM m, Ord peeraddr) => PeerSelectionActions extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn m -> PeerSelectionPolicy peeraddr m -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers extraTrace peeraddr peerconn)
  • localRoots :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr peerconn (m :: Type -> Type). (MonadTimer 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 extraTrace peeraddr peerconn)
  • ledgerPeerSnapshotChange :: forall (m :: Type -> Type) extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn extraDebugState extraTrace. 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 extraTrace peeraddr peerconn)

Documentation

targetPeers :: forall (m :: Type -> Type) peeraddr extraState extraFlags extraPeers extraAPI extraCounters peerconn extraDebugState extraTrace. (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 extraTrace 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 extraTrace peeraddr peerconn. MonadSTM m => JobPool () m (Completion m extraState extraDebugState extraFlags extraPeers extraTrace peeraddr peerconn) -> PeerSelectionState extraState extraFlags extraPeers peeraddr peerconn -> Guarded (STM m) (TimedDecision m extraState extraDebugState extraFlags extraPeers extraTrace peeraddr peerconn) Source #

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

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

Monitor connections.

localRoots :: forall extraState extraDebugState extraFlags extraPeers extraAPI extraCounters extraTrace peeraddr peerconn (m :: Type -> Type). (MonadTimer 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 extraTrace peeraddr peerconn) Source #

Monitor local roots using readLocalRootPeers STM action.

ledgerPeerSnapshotChange :: forall (m :: Type -> Type) extraState extraFlags extraPeers extraAPI extraCounters peeraddr peerconn extraDebugState extraTrace. 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 extraTrace 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