Safe Haskell | None |
---|---|
Language | Haskell2010 |
Ouroboros.Consensus.Storage.ImmutableDB.Chunks.Layout
Description
Layout of individual chunks on disk
This module is not re-exported from the public Chunks API, since it's only relevant internally in the immutable DB.
Synopsis
- data NextRelativeSlot
- firstBlockOrEBB :: ChunkInfo -> ChunkNo -> RelativeSlot
- maxRelativeSlot :: ChunkInfo -> ChunkNo -> RelativeSlot
- nextRelativeSlot :: HasCallStack => RelativeSlot -> NextRelativeSlot
- nthBlockOrEBB :: ( HasCallStack , Integral a) => ChunkInfo -> ChunkNo -> a -> RelativeSlot
- relativeSlotIsEBB :: RelativeSlot -> IsEBB
- unsafeNextRelativeSlot :: HasCallStack => RelativeSlot -> RelativeSlot
- data RelativeSlot
- chunkIndexOfSlot :: ChunkInfo -> SlotNo -> ChunkNo
-
data
ChunkSlot
=
UnsafeChunkSlot
{
- chunkIndex :: ! ChunkNo
- chunkRelative :: ! RelativeSlot
- pattern ChunkSlot :: ChunkNo -> RelativeSlot -> ChunkSlot
- chunkSlotForBlockOrEBB :: ChunkInfo -> BlockOrEBB -> ChunkSlot
- chunkSlotForBoundaryBlock :: HasCallStack => ChunkInfo -> EpochNo -> ChunkSlot
- chunkSlotForRegularBlock :: ChunkInfo -> SlotNo -> ChunkSlot
- chunkSlotForRelativeSlot :: ChunkNo -> RelativeSlot -> ChunkSlot
- chunkSlotForTip :: ChunkInfo -> Tip blk -> ChunkSlot
- chunkSlotForUnknownBlock :: HasCallStack => ChunkInfo -> SlotNo -> ( ChunkNo , Maybe ChunkSlot , ChunkSlot )
- chunkSlotToBlockOrEBB :: ChunkInfo -> ChunkSlot -> BlockOrEBB
- chunkSlotToSlot :: ChunkInfo -> ChunkSlot -> SlotNo
- slotMightBeEBB :: ChunkInfo -> SlotNo -> Maybe EpochNo
- slotNoOfBlockOrEBB :: ChunkInfo -> BlockOrEBB -> SlotNo
- slotNoOfEBB :: HasCallStack => ChunkInfo -> EpochNo -> SlotNo
Relative slots
data NextRelativeSlot Source #
Result of
nextRelativeSlot
Constructors
NextRelativeSlot RelativeSlot |
There is a next negative slot |
NoMoreRelativeSlots |
We reached the end of the chunk |
firstBlockOrEBB :: ChunkInfo -> ChunkNo -> RelativeSlot Source #
The first relative slot
NOTE: This refers to an EBB only if the
ChunkSize
supports it.
maxRelativeSlot :: ChunkInfo -> ChunkNo -> RelativeSlot Source #
The last relative slot within a chunk of the given size
nextRelativeSlot :: HasCallStack => RelativeSlot -> NextRelativeSlot Source #
Next relative slot
nthBlockOrEBB :: ( HasCallStack , Integral a) => ChunkInfo -> ChunkNo -> a -> RelativeSlot Source #
The
n
'th relative slot for an arbitrary block
NOTE: Offset
0
refers to an EBB only if the
ChunkSize
supports it.
relativeSlotIsEBB :: RelativeSlot -> IsEBB Source #
Is this relative slot reserved for an EBB?
unsafeNextRelativeSlot :: HasCallStack => RelativeSlot -> RelativeSlot Source #
Variation on
nextRelativeSlot
where the caller
knows
that there must
be a next slot
Throws an assertion failure (if assertions are enabled) if there is no next slot.
Opaque
data RelativeSlot Source #
A relative slot within a chunk
Instances
Chunks
Slots within a chunk
Uniquely identify a block within the immutable DB
Constructor marked as
Unsafe
; construction should normally happen inside
this module only (though see the
ChunkSlot
pattern synonym).
Constructors
UnsafeChunkSlot | |
Fields
|
Instances
Translation
to
ChunkSlot
chunkSlotForBlockOrEBB :: ChunkInfo -> BlockOrEBB -> ChunkSlot Source #
Chunk slot for
BlockOrEBB
chunkSlotForBoundaryBlock :: HasCallStack => ChunkInfo -> EpochNo -> ChunkSlot Source #
Chunk slot for EBB
chunkSlotForRegularBlock :: ChunkInfo -> SlotNo -> ChunkSlot Source #
Chunk slot for a regular block (i.e., not an EBB)
chunkSlotForUnknownBlock :: HasCallStack => ChunkInfo -> SlotNo -> ( ChunkNo , Maybe ChunkSlot , ChunkSlot ) Source #
Translation
from
ChunkSlot
chunkSlotToBlockOrEBB :: ChunkInfo -> ChunkSlot -> BlockOrEBB Source #
chunkSlotToSlot :: ChunkInfo -> ChunkSlot -> SlotNo Source #
From relative to absolute slot
This can be used for EBBs and regular blocks, since they don't share a relative slot.
Support for EBBs
slotNoOfBlockOrEBB :: ChunkInfo -> BlockOrEBB -> SlotNo Source #
slotNoOfEBB :: HasCallStack => ChunkInfo -> EpochNo -> SlotNo Source #