BackupOwnerCursorIo.loop: def of mylsm-lsm-store@0.6.0.1 Import: import mylsm-lsm-store@0.6.0.1/src/transfer/BackupOwnerCursorIo.bend as BackupOwnerCursorIo Lines 226-261 of mylsm-lsm-store@0.6.0.1/src/transfer/BackupOwnerCursorIo.bend: https://jend.leeeet.dev/read.txt?path=mylsm-lsm-store@0.6.0.1/src/transfer/BackupOwnerCursorIo.bend&start_line=226&end_line=261 import Base import mylsm-lsm-store@0.6.0.1/src/Fs.bend as Fs import mylsm-lsm-store@0.6.0.1/src/transfer/BackupCursor.bend as BackupCursor import mylsm-lsm-store@0.6.0.1/src/transfer/BackupIo.bend as BackupIo import mylsm-lsm-store@0.6.0.1/src/transfer/Backup.bend as Backup # Advances backup IO state without reading beyond its declared work budget. def loop( fuel: Nat, +destination: String, +temporary: String, state: State ) -> IO(Result<&1, &1, BackupIo.Error, Unit>): match fuel: case 0n: loop.abort(temporary, state) case 1n+rest: match state: case Need{file, source, stream}: do IO>: advanced : State <- source.step(source, stream, file) loop(rest, destination, temporary, advanced) case Output{file, source, step}: match step: case BackupCursor.Failure{_, error}: close.failed.source(file, temporary, source, error) case BackupCursor.Continue{stream}: loop(rest, destination, temporary, Need{file, source, stream}) case BackupCursor.Chunk{stream, bytes}: do IO>: written : File & Result<&1, &1, U32 & String, Unit> <- Fs.write_bytes(file, bytes) loop(rest, destination, temporary, Written{written, source, stream}) case BackupCursor.End{}: close.success(destination, temporary, file, source) case Written{pair, source, stream}: match pair: case (file, Fail{(code, message)}): close.failed.source(file, temporary, source, Backup.SourceFailure{code, message}) case (file, Done{Unit{}}): loop(rest, destination, temporary, Need{file, source, stream}) Uses (19): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=File https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=IO.bind https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Result https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=String https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Unit https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/Fs.bend&name=write_bytes https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/transfer/Backup.bend&name=Error https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/transfer/BackupCursor.bend&name=Step https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/transfer/BackupIo.bend&name=Error https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/transfer/BackupOwnerCursorIo.bend&name=State https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/transfer/BackupOwnerCursorIo.bend&name=close.failed.source https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/transfer/BackupOwnerCursorIo.bend&name=close.success https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/transfer/BackupOwnerCursorIo.bend&name=loop.abort https://jend.leeeet.dev/definition.txt?path=mylsm-lsm-store@0.6.0.1/src/transfer/BackupOwnerCursorIo.bend&name=source.step