{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
module Ouroboros.Consensus.Node.ExitPolicy
( NodeToNodeInitiatorResult (..)
, returnPolicy
, ReturnPolicy
) where
import Control.DeepSeq (NFData)
import GHC.Generics
import qualified Ouroboros.Consensus.MiniProtocol.ChainSync.Client as CSClient
import Ouroboros.Network.ExitPolicy
data NodeToNodeInitiatorResult
= ChainSyncInitiatorResult !CSClient.ChainSyncClientResult
| NoInitiatorResult
deriving ((forall x.
NodeToNodeInitiatorResult -> Rep NodeToNodeInitiatorResult x)
-> (forall x.
Rep NodeToNodeInitiatorResult x -> NodeToNodeInitiatorResult)
-> Generic NodeToNodeInitiatorResult
forall x.
Rep NodeToNodeInitiatorResult x -> NodeToNodeInitiatorResult
forall x.
NodeToNodeInitiatorResult -> Rep NodeToNodeInitiatorResult x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
NodeToNodeInitiatorResult -> Rep NodeToNodeInitiatorResult x
from :: forall x.
NodeToNodeInitiatorResult -> Rep NodeToNodeInitiatorResult x
$cto :: forall x.
Rep NodeToNodeInitiatorResult x -> NodeToNodeInitiatorResult
to :: forall x.
Rep NodeToNodeInitiatorResult x -> NodeToNodeInitiatorResult
Generic, NodeToNodeInitiatorResult -> ()
(NodeToNodeInitiatorResult -> ())
-> NFData NodeToNodeInitiatorResult
forall a. (a -> ()) -> NFData a
$crnf :: NodeToNodeInitiatorResult -> ()
rnf :: NodeToNodeInitiatorResult -> ()
NFData)
returnPolicy :: ReturnPolicy NodeToNodeInitiatorResult
returnPolicy :: ReturnPolicy NodeToNodeInitiatorResult
returnPolicy NodeToNodeInitiatorResult
NoInitiatorResult = DiffTime -> RepromoteDelay
RepromoteDelay DiffTime
10
returnPolicy (ChainSyncInitiatorResult ChainSyncClientResult
result) = case ChainSyncClientResult
result of
CSClient.ForkTooDeep Point blk
_ Our (Tip blk)
_ourTip Their (Tip blk)
_theirTip -> DiffTime -> RepromoteDelay
RepromoteDelay DiffTime
120
CSClient.NoMoreIntersection Our (Tip blk)
_ourTip Their (Tip blk)
_theirTip -> DiffTime -> RepromoteDelay
RepromoteDelay DiffTime
120
CSClient.RolledBackPastIntersection
Point blk
_
Our (Tip blk)
_ourTip
Their (Tip blk)
_theirTip -> DiffTime -> RepromoteDelay
RepromoteDelay DiffTime
180
ChainSyncClientResult
CSClient.AskedToTerminate -> DiffTime -> RepromoteDelay
RepromoteDelay DiffTime
10