ouroboros-consensus-0.1.0.0: Consensus layer for the Ouroboros blockchain protocol
Safe HaskellNone
LanguageHaskell2010

Ouroboros.Consensus.BlockchainTime.API

Synopsis

Documentation

data BlockchainTime m Source #

Blockchain time

When we run the blockchain, there is a single, global time. We abstract over this here to allow to query this time (in terms of the current slot), and execute an action each time we advance a slot.

Constructors

BlockchainTime 

Fields

data CurrentSlot Source #

Constructors

CurrentSlot !SlotNo

The current slot is known

CurrentSlotUnknown

The current slot is not yet known

This only happens when the tip of the ledger is so far behind that we lack the information necessary to translate the current UTCTime into a SlotNo. This should only be the case during syncing.

Instances

Instances details
Show CurrentSlot Source # 
Instance details

Defined in Ouroboros.Consensus.BlockchainTime.API

Generic CurrentSlot Source # 
Instance details

Defined in Ouroboros.Consensus.BlockchainTime.API

Associated Types

type Rep CurrentSlot :: Type -> Type #

NoThunks CurrentSlot Source # 
Instance details

Defined in Ouroboros.Consensus.BlockchainTime.API

type Rep CurrentSlot Source # 
Instance details

Defined in Ouroboros.Consensus.BlockchainTime.API

type Rep CurrentSlot = D1 ('MetaData "CurrentSlot" "Ouroboros.Consensus.BlockchainTime.API" "ouroboros-consensus-0.1.0.0-GfJNvFcM6lj2s5utKAUPEp" 'False) (C1 ('MetaCons "CurrentSlot" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SlotNo)) :+: C1 ('MetaCons "CurrentSlotUnknown" 'PrefixI 'False) (U1 :: Type -> Type))

onKnownSlotChange Source #

Arguments

:: forall m. (IOLike m, HasCallStack) 
=> ResourceRegistry m 
-> BlockchainTime m 
-> String

Label for the thread

-> (SlotNo -> m ())

Action to execute

-> m (m ()) 

Spawn a thread to run an action each time the slot changes

The action will not be called until the current slot becomes known (if the tip of our ledger is too far away from the current wallclock time, we may not know what the current SlotId is).

Returns a handle to kill the thread.