Pinned reader for one sealed evidence artifact.
The descriptor is a file-server IoDevice so admission and query workers can
pread/3 the same opened inode. :raw descriptors are process-local and
cannot be shared with bounded workers. Queries continue against this
descriptor after the path is replaced. Size and footer accounting detect
append or truncate. Same-size overwrites are detected when a queried range's
digest disagrees with admission, or during admission seal confirmation.
Summary
Types
@type t() :: %{ io: :file.io_device(), size: non_neg_integer(), footer: PtcRunner.Kernel.InspectionArtifact.Format.footer(), digest: binary() }
Functions
@spec assert_stable(t()) :: :ok | {:error, :source_changed}
@spec close(t() | nil) :: :ok
@spec confirm_seal(t(), binary(), map(), pos_integer()) :: :ok | {:error, :malformed_source | :source_changed}
@spec current_size(t()) :: {:ok, non_neg_integer()} | {:error, :source_changed}
@spec pread(t(), non_neg_integer(), non_neg_integer()) :: {:ok, binary()} | {:error, :source_changed}
@spec verify_range(t(), non_neg_integer(), non_neg_integer(), binary()) :: {:ok, binary()} | {:error, :source_changed}