src/SstStreamIo.bend relies on unsafe/foreign
raw source on the hub · import mylsm-lsm-store@0.4.0.0/src/SstStreamIo.bend as SstStreamIo
6 imports
import Base import ./Fs.bend as Fs import ./MemTable.bend as MemTable import ./Sstable.bend as Sstable import ./SstFile.bend as SstFile import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes
Types
type ExactResult source · line 25 · raw
Type
Represent ExactResult data used by the streaming SSTable filesystem effects.
ExactResult@bytes:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> @complete:Bool -> ExactResult
type ExactState source · line 29 · raw
Type
Represent ExactState data used by the streaming SSTable filesystem effects.
ExactNeed@file:File -> @remaining:Nat -> @chunks:List<&1, 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes> -> ExactState
ExactRead@pair:Pair(File, Result<&1, &1, Pair(U32, String), 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>) -> @remaining:Nat -> @chunks:List<&1, 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes> -> ExactState
type StreamReadState source · line 88 · raw
Type
Represent StreamReadState data used by the streaming SSTable filesystem effects.
ReadHeader@file:File -> @size:Nat -> StreamReadState
ReadHeaderResult@pair:Pair(File, Result<&1, &1, Pair(U32, String), 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>) -> @size:Nat -> StreamReadState
ReadBlocks@file:File -> @size:Nat -> @used:Nat -> @parser:0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState -> StreamReadState
ReadBlockHeaderResult@pair:Pair(File, Result<&1, &1, Pair(U32, String), 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>) -> @size:Nat -> @used:Nat -> @parser:0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState -> StreamReadState
ReadBlockBody@file:File -> @size:Nat -> @used:Nat -> @parser:0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState -> @header:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> @tail_len:U32 -> StreamReadState
ReadBlockBodyResult@pair:Pair(File, Result<&1, &1, Pair(U32, String), 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>) -> @size:Nat -> @used:Nat -> @parser:0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState -> @header:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> @tail_len:U32 -> StreamReadState
ReadClose@file:File -> @result:Result<&1, &1, Pair(U32, String), 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> StreamReadState
type WriteState source · line 418 · raw
Type
Linear writer state keeps the file handle paired with the encoder result.
WriteNext@file:File -> @encoder:0x571fd57004366c423dfd4b51196743b5/src/SstFile.Encoder -> WriteState
WriteOutput@file:File -> @pair:Pair(0x571fd57004366c423dfd4b51196743b5/src/SstFile.Encoder, Maybe<&1, 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>) -> WriteState
WriteResult@pair:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> @encoder:0x571fd57004366c423dfd4b51196743b5/src/SstFile.Encoder -> WriteState
Definitions
def codec_error source · line 9 · raw
@error:0x571fd57004366c423dfd4b51196743b5/src/SstFile.Error -> Pair(U32, String)
Map pure format errors to the storage IO error domain.
def exact.complete source · line 34 · raw
@file:File -> @chunks:List<&1, 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes> -> @complete:Bool -> IO(Pair(File, Result<&1, &1, Pair(U32, String), ExactResult>))
def exact.loop source · line 42 · raw
@fuel:Nat -> @state:ExactState -> IO(Pair(File, Result<&1, &1, Pair(U32, String), ExactResult>))
def exact.start source · line 84 · raw
@file:File -> @+needed:Nat -> IO(Pair(File, Result<&1, &1, Pair(U32, String), ExactResult>))
def read.exact.complete source · line 103 · raw
@bytes:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> @complete:Bool -> Result<&1, &1, Pair(U32, String), 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>
def read.exact.state source · line 110 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), ExactResult>) -> Pair(File, Result<&1, &1, Pair(U32, String), 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>)
def read.header.parsed source · line 119 · raw
@file:File -> @+size:Nat -> @result:Result<&1, &1, 0x571fd57004366c423dfd4b51196743b5/src/SstFile.Error, 0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState> -> StreamReadState
def read.header.state source · line 130 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>) -> @+size:Nat -> StreamReadState
def read.block.header.bound source · line 140 · raw
@file:File -> @+size:Nat -> @+used:Nat -> @parser:0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState -> @header:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> @+tail_len:U32 -> @valid:Bool -> StreamReadState
def read.block.header.size source · line 155 · raw
@file:File -> @+size:Nat -> @+used:Nat -> @parser:0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState -> @header:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> @tail:Maybe<&2, U32> -> StreamReadState
def read.block.header.tail source · line 171 · raw
@saved:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> @tail:Maybe<&2, U32> -> Pair(0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes, Maybe<&2, U32>)
def read.block.header.inspected source · line 177 · raw
@pair:Pair(0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes, 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes) -> Pair(0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes, Maybe<&2, U32>)
def read.block.header.copied source · line 184 · raw
@file:File -> @+size:Nat -> @+used:Nat -> @parser:0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState -> @inspected:Pair(0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes, Maybe<&2, U32>) -> StreamReadState
def read.block.header.copy source · line 198 · raw
@file:File -> @+size:Nat -> @+used:Nat -> @parser:0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState -> @header:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> StreamReadState
def read.block.header.state source · line 208 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>) -> @+size:Nat -> @+used:Nat -> @parser:0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState -> StreamReadState
def read.block.body.parsed source · line 220 · raw
@file:File -> @+size:Nat -> @+used:Nat -> @+tail_len:U32 -> @result:Result<&1, &1, 0x571fd57004366c423dfd4b51196743b5/src/SstFile.Error, 0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState> -> StreamReadState
def read.block.body.state source · line 234 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>) -> @+size:Nat -> @+used:Nat -> @parser:0x571fd57004366c423dfd4b51196743b5/src/SstFile.StreamState -> @header:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> @+tail_len:U32 -> StreamReadState
def read.exhausted.file source · line 284 · raw
@file:File -> IO(Result<&1, &1, Pair(U32, String), 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>)
def read.exhausted.pair source · line 289 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes>) -> IO(Result<&1, &1, Pair(U32, String), 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>)
def read.exhausted source · line 296 · raw
@state:StreamReadState -> IO(Result<&1, &1, Pair(U32, String), 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>)
def read.loop source · line 317 · raw
@fuel:Nat -> @state:StreamReadState -> IO(Result<&1, &1, Pair(U32, String), 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>)
def read.table.size.checked source · line 361 · raw
@+path:String -> @+size:Nat -> @valid:Bool -> IO(Result<&1, &1, Pair(U32, String), 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>)
def read.table.size source · line 375 · raw
@+path:String -> @+size:Nat -> IO(Result<&1, &1, Pair(U32, String), 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>)
def read_table source · line 380 · raw
@+path:String -> IO(Result<&1, &1, Pair(U32, String), 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>)
Read table for the streaming SSTable filesystem effects.
def write.finish.chmod source · line 385 · raw
@result:Result<&1, &1, Pair(U32, String), Unit> -> IO(Result<&1, &1, Pair(U32, String), Unit>)
def write.finish.synced source · line 395 · raw
@+path:String -> @result:Result<&1, &1, Pair(U32, String), Unit> -> IO(Result<&1, &1, Pair(U32, String), Unit>)
def write.finish source · line 408 · raw
@file:File -> @+path:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)
def write.step source · line 425 · raw
@fuel:Nat -> @+path:String -> @state:WriteState -> IO(Result<&1, &1, Pair(U32, String), Unit>)
def write.encoder source · line 470 · raw
@+path:String -> @fuel:Nat -> @result:Result<&1, &1, 0x571fd57004366c423dfd4b51196743b5/src/SstFile.Error, 0x571fd57004366c423dfd4b51196743b5/src/SstFile.Encoder> -> IO(Result<&1, &1, Pair(U32, String), Unit>)
def write_table source · line 484 · raw
@+path:String -> @+entries:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry> -> @+level:U32 -> IO(Result<&1, &1, Pair(U32, String), Unit>)
Encode and write one SST as packed chunks, then sync it before publication.