def read.result

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

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/transfer/FormatInspect.bend as FormatInspect
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes

40def read.result(
41  +path: String,
42  lock: DbLock.Lock,
43  file_result: File & Result<&1, &1, U32 & String, Bytes.Bytes>
44) -> IO(Result<&1, &1, Error, FormatInspect.Inspection>):
45  match file_result:
46    case (file, Fail{error}):
47      do IO<Result<&1, &1, Error, FormatInspect.Inspection>>:
48        _closed : Unit <- File.close(file)
49        released : Result<&1, &1, DurableError.Error, Unit> <-
50          DbLock.release(lock, "inspect", path)
51        return read.failed.released(error, released)
52    case (file, Done{bytes}):
53      do IO<Result<&1, &1, Error, FormatInspect.Inspection>>:
54        _closed : Unit <- File.close(file)
55        released : Result<&1, &1, DurableError.Error, Unit> <-
56          DbLock.release(lock, "inspect", path)
57        return read.success.released(bytes, released)

Uses (19)

Used by (1)