Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Marconi.Cardano.Indexers.ExtLedgerStateCoordinator
Description
A coordinator that also maintains the ExtLedgerState
.
- It takes an
input
computes theExtLedgerState
out of it (in a preprocessor, we don't want to pass the ledger state if it isn't needed) - volatile
ExtLedgerState
s 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
- type ExtLedgerState = ExtLedgerState (HardForkBlock (CardanoEras StandardCrypto))
- data ExtLedgerStateEvent = ExtLedgerStateEvent {}
- type ExtLedgerConfig = ExtLedgerCfg (HardForkBlock (CardanoEras StandardCrypto))
- newtype ExtLedgerStateCoordinator output input = ExtLedgerStateCoordinator (Coordinator output)
- data ExtLedgerStateWorkerConfig output input = ExtLedgerStateWorkerConfig {
- workerEventExtractor :: input -> BlockEvent
- workerDistanceExtractor :: input -> Word64
- workerNodeConfigPath :: FilePath
- workerSnapshotInterval :: Word64
- workerSecurityParam :: SecurityParam
- workerOutputBuilder :: ExtLedgerStateEvent -> ExtLedgerStateEvent -> input -> Maybe output
- data EpochMetadata
- mkExtLedgerStateCoordinator :: (MonadIO m, MonadError IndexerError m, Point output ~ ChainPoint) => [Worker output ChainPoint] -> m (ExtLedgerStateCoordinator output input)
- 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)))
- buildExtLedgerStateEventIndexer :: (MonadIO m, MonadError IndexerError m) => CodecConfig (HardForkBlock (CardanoEras StandardCrypto)) -> FilePath -> m (FileIndexer EpochMetadata ExtLedgerStateEvent)
- getEpochNo :: ExtLedgerState (CardanoBlock StandardCrypto) -> Maybe EpochNo
- newEpochPreprocessor :: Monad m => (a -> EpochNo) -> Preprocessor m ChainPoint a a
- readGenesisFile :: (MonadIO m, MonadError IndexerError m) => FilePath -> m GenesisConfig
- deserialiseLedgerState :: CodecConfig -> EpochMetadata -> ByteString -> Either Text (Maybe ExtLedgerStateEvent)
- deserialiseMetadata :: [Text] -> Maybe EpochMetadata
Types
data ExtLedgerStateEvent #
Base event used to store the ExtLedgerState
Constructors
ExtLedgerStateEvent | |
Fields |
Instances
newtype ExtLedgerStateCoordinator output input #
Constructors
ExtLedgerStateCoordinator (Coordinator output) |
Instances
data ExtLedgerStateWorkerConfig output input #
Configuration of the worker
Constructors
ExtLedgerStateWorkerConfig | |
Fields
|
data EpochMetadata #
Metadata used to create ExtLedgerStateEventIndexer
filenames
Instances
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
buildExtLedgerStateEventIndexer :: (MonadIO m, MonadError IndexerError m) => CodecConfig (HardForkBlock (CardanoEras StandardCrypto)) -> FilePath -> m (FileIndexer EpochMetadata ExtLedgerStateEvent) #
File Indexer to save the ExtLedgerState
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
readGenesisFile :: (MonadIO m, MonadError IndexerError m) => FilePath -> m GenesisConfig #
For testing
deserialiseLedgerState :: CodecConfig -> EpochMetadata -> ByteString -> Either Text (Maybe ExtLedgerStateEvent) #
deserialiseMetadata :: [Text] -> Maybe EpochMetadata #