Safe Haskell | None |
---|---|
Language | Haskell2010 |
Ouroboros.Consensus.Storage.ImmutableDB.Impl.Index.Secondary
Synopsis
- newtype BlockOffset = BlockOffset { }
- data BlockSize
-
data
Entry
blk =
Entry
{
- blockOffset :: ! BlockOffset
- headerOffset :: ! HeaderOffset
- headerSize :: ! HeaderSize
- checksum :: ! CRC
- headerHash :: !( HeaderHash blk)
- blockOrEBB :: ! BlockOrEBB
- newtype HeaderOffset = HeaderOffset { }
- newtype HeaderSize = HeaderSize { }
- appendEntry :: forall m blk h. ( HasCallStack , ConvertRawHash blk, MonadThrow m) => HasFS m h -> Handle h -> Entry blk -> m Word64
- entrySize :: ConvertRawHash blk => Proxy blk -> Word32
- readAllEntries :: forall m blk h. ( HasCallStack , ConvertRawHash blk, MonadThrow m, StandardHash blk, Typeable blk) => HasFS m h -> SecondaryOffset -> ChunkNo -> ( Entry blk -> Bool ) -> Word64 -> IsEBB -> m [ WithBlockSize ( Entry blk)]
- readEntries :: forall m blk h t. ( HasCallStack , ConvertRawHash blk, MonadThrow m, StandardHash blk, Typeable blk, Traversable t) => HasFS m h -> ChunkNo -> t ( IsEBB , SecondaryOffset ) -> m (t ( Entry blk, BlockSize ))
- readEntry :: forall m blk h. ( HasCallStack , ConvertRawHash blk, MonadThrow m, StandardHash blk, Typeable blk) => HasFS m h -> ChunkNo -> IsEBB -> SecondaryOffset -> m ( Entry blk, BlockSize )
- truncateToEntry :: forall m blk h. ( HasCallStack , ConvertRawHash blk, MonadThrow m) => Proxy blk -> HasFS m h -> ChunkNo -> SecondaryOffset -> m ()
- writeAllEntries :: forall m blk h. ( HasCallStack , ConvertRawHash blk, MonadThrow m) => HasFS m h -> ChunkNo -> [ Entry blk] -> m ()
Documentation
newtype BlockOffset Source #
Constructors
BlockOffset | |
Fields |
Instances
Constructors
BlockSize Word32 | |
LastEntry |
In case of the last entry, we don't have any entry and thus block offset after it that we can use to calculate the size of the block. |
Instances
Eq BlockSize Source # | |
Show BlockSize Source # | |
Generic BlockSize Source # | |
NoThunks BlockSize Source # | |
type Rep BlockSize Source # | |
Defined in Ouroboros.Consensus.Storage.ImmutableDB.Impl.Index.Secondary
type
Rep
BlockSize
=
D1
('
MetaData
"BlockSize" "Ouroboros.Consensus.Storage.ImmutableDB.Impl.Index.Secondary" "ouroboros-consensus-0.1.0.1-DT4Cvwf63DZKctsEvaJqCU" '
False
) (
C1
('
MetaCons
"BlockSize" '
PrefixI
'
False
) (
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
Word32
))
:+:
C1
('
MetaCons
"LastEntry" '
PrefixI
'
False
) (
U1
::
Type
->
Type
))
|
Constructors
Entry | |
Fields
|
Instances
newtype HeaderOffset Source #
Constructors
HeaderOffset | |
Fields |
Instances
newtype HeaderSize Source #
Constructors
HeaderSize | |
Fields |
Instances
Arguments
:: forall m blk h. ( HasCallStack , ConvertRawHash blk, MonadThrow m) | |
=> HasFS m h | |
-> Handle h | |
-> Entry blk | |
-> m Word64 |
The number of bytes written |
Arguments
:: forall m blk h. ( HasCallStack , ConvertRawHash blk, MonadThrow m, StandardHash blk, Typeable blk) | |
=> HasFS m h | |
-> SecondaryOffset |
Start from this offset |
-> ChunkNo | |
-> ( Entry blk -> Bool ) |
Stop condition: stop after this entry |
-> Word64 |
The size of the chunk file, used to compute the size of the last block. |
-> IsEBB |
Is the first entry to read an EBB? |
-> m [ WithBlockSize ( Entry blk)] |
Read all entries in a secondary index file, starting from the given
SecondaryOffset
until the stop condition is true or until the end of the
file is reached. The entry for which the stop condition is true will be the
last in the returned list of entries.
readEntries :: forall m blk h t. ( HasCallStack , ConvertRawHash blk, MonadThrow m, StandardHash blk, Typeable blk, Traversable t) => HasFS m h -> ChunkNo -> t ( IsEBB , SecondaryOffset ) -> m (t ( Entry blk, BlockSize )) Source #
Same as
readEntry
, but for multiple entries.
NOTE: only use this for a few entries, as we will seek (
pread
) for each
entry. Use
readAllEntries
if you want to read all entries in the
secondary index file.
readEntry :: forall m blk h. ( HasCallStack , ConvertRawHash blk, MonadThrow m, StandardHash blk, Typeable blk) => HasFS m h -> ChunkNo -> IsEBB -> SecondaryOffset -> m ( Entry blk, BlockSize ) Source #
Read the entry at the given
SecondaryOffset
. Interpret it as an EBB
depending on the given
IsEBB
.
truncateToEntry :: forall m blk h. ( HasCallStack , ConvertRawHash blk, MonadThrow m) => Proxy blk -> HasFS m h -> ChunkNo -> SecondaryOffset -> m () Source #
Remove all entries after the entry at the given
SecondaryOffset
. That
entry will now be the last entry in the secondary index file.
writeAllEntries :: forall m blk h. ( HasCallStack , ConvertRawHash blk, MonadThrow m) => HasFS m h -> ChunkNo -> [ Entry blk] -> m () Source #