ouroboros-consensus-0.1.0.1: Consensus layer for the Ouroboros blockchain protocol
Safe Haskell None
Language Haskell2010

Ouroboros.Consensus.Storage.ImmutableDB.Impl.Util

Contents

Synopsis

Utilities

data Two a Source #

Useful when you have exactly two values of some type and want to traverse over both of them (which is not possible with a tuple).

Constructors

Two a a

checkChecksum Source #

Arguments

:: ( HasCallStack , HasHeader blk, MonadThrow m)
=> FsPath
-> RealPoint blk
-> CRC

Expected checksum

-> CRC

Actual checksum

-> m ()

Check whether the given checksums match. If not, throw a ChecksumMismatchError .

dbFilesOnDisk :: Set String -> ( Set ChunkNo , Set ChunkNo , Set ChunkNo ) Source #

Go through all files, making three sets: the set of chunk files, primary index files, and secondary index files, discarding all others.

parseDBFile :: String -> Maybe ( String , ChunkNo ) Source #

Parse the prefix and chunk number from the filename of an index or chunk file.

parseDBFile "00001.chunk"

Just ("chunk", 1) > parseDBFile "00012.primary" Just ("primary", 12)

removeFilesStartingFrom :: ( HasCallStack , Monad m) => HasFS m h -> ChunkNo -> m () Source #

Remove all chunk and index starting from the given chunk (included).

runGet :: forall blk a m. ( HasCallStack , MonadThrow m, StandardHash blk, Typeable blk) => Proxy blk -> FsPath -> Get a -> ByteString -> m a Source #

Wrapper around runGetOrFail that throws an InvalidFileError when it failed or when there was unconsumed input.

runGetWithUnconsumed :: forall blk a m. ( HasCallStack , MonadThrow m, StandardHash blk, Typeable blk) => Proxy blk -> FsPath -> Get a -> ByteString -> m ( ByteString , a) Source #

Same as runGet , but allows unconsumed input and returns it.

tryImmutableDB :: forall m blk a. ( MonadCatch m, StandardHash blk, Typeable blk) => Proxy blk -> m a -> m ( Either ( ImmutableDBError blk) a) Source #

Execute an action and catch the ImmutableDBError and FsError that can be thrown by it, and wrap the FsError in an ImmutableDBError using the FileSystemError constructor.

This should be used whenever you want to run an action on the ImmutableDB and catch the ImmutableDBError and the FsError (wrapped in the former) it may thrown.