type error =
| Invalid_byte of int | Appear when we expect a specific byte and we catch another one. |
| Invalid_version of Stdlib.Int32.t | Appear when the version of the IDX file is wrong. |
| Invalid_index_of_bigoffset of int | Appear when we try to read a big offset value and we can't catch it. |
| Expected_bigoffset_table | Appear when we don't have a big offset table but expect one. |
| Invalid_hash of Hash.t * Hash.t | Appear when the hash produced when we un-serialize the IDX file does not correspond with the hash provided. |
The error type.
refill off len t
provides a new t
with len
bytes to read, starting at off
. This byte range is read by calls to eval
with t
until `Await
is returned.
val eval : Cstruct.t -> t -> [ `Await of t | `End of t * Hash.t | `Hash of t * (Hash.t * Checkseum.Crc32.t * int64) | `Error of t * error ]
eval src t
is:
`Await t
ifft
needs more input storage. The client must userefill
to provide a new buffer and then calleval
with`Await
until other value returned.`End (t, hash)
whent
is done. We returns the hash of the IDX file.`Hash (t, (hash, crc, offset))
whent
can returns a new value(hash, crc, offset)
. The client can calleval
to continue the process. The value will be consumed then.`Error (t, exn)
iff the decoder meet anerror
exn
. The decoder can't continue and sticks in this situation.