def open.tail
bend-kit-journal@0.3.1.0 · journal.bend:321
import bend-kit-journal@0.3.1.0/journal.bend as Journal
import Base
321def open.tail(t: Tail, file: File, +max: U32, +pos: U32, -A: Type, acc: A) -> IO(Result<&1, &1, U32 & String, Journal & A>):
322 match t:
323 case Clean{}:
324 do IO<Result<&1, &1, U32 & String, Journal & A>>:
325 return Done{(Journal{file, max, pos, True{}}, acc)}
326 case Torn{}:
327 do IO<Result<&1, &1, U32 & String, Journal & A>>:
328 r : File & Result<&1, &1, U32 & String, Unit> <- truncate(file, pos)
329 open.cut(r, max, pos, A, acc)
330 case Corrupt{why}:
331 do IO<Result<&1, &1, U32 & String, Journal & A>>:
332 File.close(file)
333 return Fail{(22, "journal: corrupt frame at offset " ++ U32.show(pos) ++ ": " ++ why)}