Safe Haskell | None |
---|---|
Language | Haskell2010 |
Ouroboros.Consensus.Storage.ImmutableDB.Chunks
Synopsis
- module Ouroboros.Consensus.Storage.ImmutableDB.Chunks.Layout
- data ChunkInfo = UniformChunkSize !ChunkSize
- data ChunkNo
- data ChunkSize = ChunkSize {}
- chunkInfoSupportsEBBs ∷ ChunkInfo → Bool
- chunksBetween ∷ ChunkNo → ChunkNo → [ChunkNo]
- compareRelativeSlot ∷ HasCallStack ⇒ RelativeSlot → RelativeSlot → Ordering
- countChunks ∷ ChunkNo → ChunkNo → Word64
- firstChunkNo ∷ ChunkNo
- getChunkSize ∷ ChunkInfo → ChunkNo → ChunkSize
- mkRelativeSlot ∷ HasCallStack ⇒ ChunkInfo → ChunkNo → Word64 → RelativeSlot
- nextChunkNo ∷ ChunkNo → ChunkNo
- prevChunkNo ∷ ChunkNo → Maybe ChunkNo
- simpleChunkInfo ∷ EpochSize → ChunkInfo
- singleChunkInfo ∷ ChunkSize → ChunkInfo
Documentation
Size of the chunks of the immutable DB
This is the key data structure that drives all layout functions.
TODO: Add support for non-uniform ChunkInfo
https://github.com/IntersectMBO/ouroboros-network/issues/1754
Constructors
UniformChunkSize !ChunkSize | A single, uniform, chunk size If EBBs are present, the chunk size must line up precisely with the epoch size (that is, the number of regular blocks in the chunk must equal the number of regular blocks in an epoch). |
Instances
Generic ChunkInfo Source # | |||||
Defined in Ouroboros.Consensus.Storage.ImmutableDB.Chunks.Internal Associated Types
| |||||
Show ChunkInfo Source # | |||||
NoThunks ChunkInfo Source # | |||||
type Rep ChunkInfo Source # | |||||
Defined in Ouroboros.Consensus.Storage.ImmutableDB.Chunks.Internal type Rep ChunkInfo = D1 ('MetaData "ChunkInfo" "Ouroboros.Consensus.Storage.ImmutableDB.Chunks.Internal" "ouroboros-consensus-0.25.0.0-inplace" 'False) (C1 ('MetaCons "UniformChunkSize" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ChunkSize))) |
Chunk number
Instances
Generic ChunkNo Source # | |||||
Defined in Ouroboros.Consensus.Storage.ImmutableDB.Chunks.Internal Associated Types
| |||||
Show ChunkNo Source # | |||||
Eq ChunkNo Source # | |||||
Ord ChunkNo Source # | |||||
NoThunks ChunkNo Source # | |||||
type Rep ChunkNo Source # | |||||
Size of a chunk
The total number of slots available in a chunk is equal to numRegularBlocks
if not
chunkCanContainEBB
, and numRegularBlocks
+ 1
otherwise.
Constructors
ChunkSize | |
Fields
|
Instances
chunksBetween ∷ ChunkNo → ChunkNo → [ChunkNo] Source #
Enumerate all chunks
chunksBetween x x == [x] chunksBetween x (nextChunkNo x) == [x, nextChunkNo x]
compareRelativeSlot ∷ HasCallStack ⇒ RelativeSlot → RelativeSlot → Ordering Source #
RelativeSlot
is partially ordered, not totally ordered
It makes no sense to compare RelativeSlots
from different chunks. Doing so
will result in an assertion failure.
countChunks ∷ ChunkNo → ChunkNo → Word64 Source #
Count number of chunks between two indices
countChunks x x == 0 countChunks x (nextChunkNo x) == 1
firstChunkNo ∷ ChunkNo Source #
First chunk
mkRelativeSlot ∷ HasCallStack ⇒ ChunkInfo → ChunkNo → Word64 → RelativeSlot Source #
Smart constructor for RelativeSlot
nextChunkNo ∷ ChunkNo → ChunkNo Source #
singleChunkInfo ∷ ChunkSize → ChunkInfo Source #
ChunkInfo
for a single ChunkSize
See also simpleChunkInfo
.