Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data Two a = Two a a
- checkChecksum ∷ (HasCallStack, HasHeader blk, MonadThrow m) ⇒ FsPath → RealPoint blk → CRC → CRC → m ()
- dbFilesOnDisk ∷ Set String → (Set ChunkNo, Set ChunkNo, Set ChunkNo)
- fsPathChunkFile ∷ ChunkNo → FsPath
- fsPathPrimaryIndexFile ∷ ChunkNo → FsPath
- fsPathSecondaryIndexFile ∷ ChunkNo → FsPath
- parseDBFile ∷ String → Maybe (String, ChunkNo)
- removeFilesStartingFrom ∷ (HasCallStack, Monad m) ⇒ HasFS m h → ChunkNo → m ()
- renderFile ∷ Text → ChunkNo → FsPath
- runGet ∷ ∀ blk a m. (HasCallStack, MonadThrow m, StandardHash blk, Typeable blk) ⇒ Proxy blk → FsPath → Get a → ByteString → m a
- runGetWithUnconsumed ∷ ∀ blk a m. (HasCallStack, MonadThrow m, StandardHash blk, Typeable blk) ⇒ Proxy blk → FsPath → Get a → ByteString → m (ByteString, a)
- tryImmutableDB ∷ ∀ m blk a. (MonadCatch m, StandardHash blk, Typeable blk) ⇒ Proxy blk → m a → m (Either (ImmutableDBError blk) a)
- wrapFsError ∷ ∀ blk m a. (MonadCatch m, StandardHash blk, Typeable blk) ⇒ Proxy blk → m a → m a
Utilities
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).
Two a a |
Instances
Foldable Two Source # | |
Defined in Ouroboros.Consensus.Storage.ImmutableDB.Impl.Util foldMap ∷ Monoid m ⇒ (a → m) → Two a → m # foldMap' ∷ Monoid m ⇒ (a → m) → Two a → m # foldr ∷ (a → b → b) → b → Two a → b # foldr' ∷ (a → b → b) → b → Two a → b # foldl ∷ (b → a → b) → b → Two a → b # foldl' ∷ (b → a → b) → b → Two a → b # foldr1 ∷ (a → a → a) → Two a → a # foldl1 ∷ (a → a → a) → Two a → a # | |
Traversable Two Source # | |
Functor Two Source # | |
∷ (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).
renderFile ∷ Text → ChunkNo → FsPath Source #
Opposite of parseDBFile
.
runGet ∷ ∀ 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 ∷ ∀ 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 ∷ ∀ 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.
wrapFsError ∷ ∀ blk m a. (MonadCatch m, StandardHash blk, Typeable blk) ⇒ Proxy blk → m a → m a Source #
Rewrap FsError
in a ImmutableDBError
.