marconi-cardano-indexers-1.2.0.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

Marconi.Cardano.Indexers.ExtLedgerStateCoordinator

Description

A coordinator that also maintains the ExtLedgerState.

  • It takes an input computes the ExtLedgerState out of it (in a preprocessor, we don't want to pass the ledger state if it isn't needed)
  • volatile ExtLedgerStates are stored in memory (in a preprocessor as well).
  • Compute the output from there
  • pass the output to the underlying coordinator
  • saves the last known stable ledger state systematically on close
Synopsis

Types

newtype ExtLedgerStateCoordinator output input #

Constructors

ExtLedgerStateCoordinator (Coordinator output) 

Instances

Instances details
(MonadIO m, MonadError IndexerError m, Point output ~ ChainPoint) => IsIndex m output (ExtLedgerStateCoordinator output) # 
Instance details

Defined in Marconi.Cardano.Indexers.ExtLedgerStateCoordinator

Methods

index :: Timed (Point output) (Maybe output) -> ExtLedgerStateCoordinator output output -> m (ExtLedgerStateCoordinator output output) Source #

indexAll :: (Eq (Point output), Traversable f) => f (Timed (Point output) (Maybe output)) -> ExtLedgerStateCoordinator output output -> m (ExtLedgerStateCoordinator output output) Source #

indexAllDescending :: (Eq (Point output), Traversable f) => f (Timed (Point output) (Maybe output)) -> ExtLedgerStateCoordinator output output -> m (ExtLedgerStateCoordinator output output) Source #

rollback :: Point output -> ExtLedgerStateCoordinator output output -> m (ExtLedgerStateCoordinator output output) Source #

setLastStablePoint :: Point output -> ExtLedgerStateCoordinator output output -> m (ExtLedgerStateCoordinator output output) Source #

(MonadIO m, MonadError IndexerError m, Point event ~ Point output, Point output ~ ChainPoint, Ord (Point output)) => IsSync m event (ExtLedgerStateCoordinator output) # 
Instance details

Defined in Marconi.Cardano.Indexers.ExtLedgerStateCoordinator

Methods

lastStablePoint :: ExtLedgerStateCoordinator output event -> m (Point event) Source #

lastSyncPoint :: ExtLedgerStateCoordinator output event -> m (Point event) Source #

(MonadIO m, MonadError IndexerError m) => Closeable m (ExtLedgerStateCoordinator output) # 
Instance details

Defined in Marconi.Cardano.Indexers.ExtLedgerStateCoordinator

Methods

close :: ExtLedgerStateCoordinator output event -> m () Source #

data ExtLedgerStateWorkerConfig output input #

Configuration of the worker

Constructors

ExtLedgerStateWorkerConfig 

Fields

data EpochMetadata #

Metadata used to create ExtLedgerStateEventIndexer filenames

Constructors

mkExtLedgerStateCoordinator :: (MonadIO m, MonadError IndexerError m, Point output ~ ChainPoint) => [Worker output ChainPoint] -> m (ExtLedgerStateCoordinator output input) #

Create a naked coordinator. | You would usually prefer to use a worker, as it will maintain the | ledger state before sending it to the coordinator.

extLedgerStateWorker :: forall m output input. (MonadIO m, MonadError IndexerError m, Point output ~ ChainPoint, Point input ~ ChainPoint) => ExtLedgerStateWorkerConfig output input -> Trace IO Text -> [Worker output ChainPoint] -> FilePath -> m (WorkerIndexer IO input output (WithTrace IO (ExtLedgerStateCoordinator output))) #

Create a worker for the extLedgerState coordinator

Utils

newEpochPreprocessor :: Monad m => (a -> EpochNo) -> Preprocessor m ChainPoint a a #

A preprocessor that filters in events when they are the first of their epoch

For testing

deserialiseLedgerState :: CodecConfig -> EpochMetadata -> ByteString -> Either Text (Maybe ExtLedgerStateEvent) #