def read.opened

mylsm-lsm-store@0.6.0.1 · src/transfer/FormatInspectIo.bend:59

import mylsm-lsm-store@0.6.0.1/src/transfer/FormatInspectIo.bend as FormatInspectIo
import Base
import mylsm-lsm-store@0.6.0.1/src/DbLock.bend as DbLock
import mylsm-lsm-store@0.6.0.1/src/DurableError.bend as DurableError
import mylsm-lsm-store@0.6.0.1/src/Fs.bend as Fs
import mylsm-lsm-store@0.6.0.1/src/transfer/FormatInspect.bend as FormatInspect
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes

59def read.opened(
60  +path: String,
61  lock: DbLock.Lock,
62  size: Nat,
63  opened: Result<&1, &1, U32 & String, File>
64) -> IO(Result<&1, &1, Error, FormatInspect.Inspection>):
65  match opened:
66    case Fail{error}:
67      do IO<Result<&1, &1, Error, FormatInspect.Inspection>>:
68        released : Result<&1, &1, DurableError.Error, Unit> <-
69          DbLock.release(lock, "inspect", path)
70        return read.failed.released(error, released)
71    case Done{file}:
72      do IO<Result<&1, &1, Error, FormatInspect.Inspection>>:
73        result : File & Result<&1, &1, U32 & String, Bytes.Bytes> <-
74          Fs.read_at(file, 0, U32.from_nat(size))
75        read.result(path, lock, result)

Uses (20)

Used by (1)