Safe Haskell | None |
---|---|
Language | Haskell2010 |
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
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).
Instances
Eq ChunkSlot Source # | |
Ord ChunkSlot Source # |
We provide a manual
|
Defined in Ouroboros.Consensus.Storage.ImmutableDB.Chunks.Layout |
|
Show ChunkSlot Source # | |
Generic ChunkSlot Source # | |
NoThunks ChunkSlot Source # | |
type Rep ChunkSlot Source # | |
Defined in Ouroboros.Consensus.Storage.ImmutableDB.Chunks.Layout
type
Rep
ChunkSlot
=
D1
('
MetaData
"ChunkSlot" "Ouroboros.Consensus.Storage.ImmutableDB.Chunks.Layout" "ouroboros-consensus-0.1.0.1-DT4Cvwf63DZKctsEvaJqCU" '
False
) (
C1
('
MetaCons
"UnsafeChunkSlot" '
PrefixI
'
True
) (
S1
('
MetaSel
('
Just
"chunkIndex") '
NoSourceUnpackedness
'
SourceStrict
'
DecidedStrict
) (
Rec0
ChunkNo
)
:*:
S1
('
MetaSel
('
Just
"chunkRelative") '
NoSourceUnpackedness
'
SourceStrict
'
DecidedStrict
) (
Rec0
RelativeSlot
)))
|
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 #