My agentic slop goes here. Not intended for anyone else!
1(** Cache entry information *)
2
3type t = {
4 key : string;
5 size : int64;
6 mtime : float;
7 ttl : float option;
8 flags : Flags.t;
9}
10
11let create ~key ~size ~mtime ~ttl ~flags =
12 { key; size; mtime; ttl; flags }
13
14let key t = t.key
15let size t = t.size
16let mtime t = t.mtime
17let ttl t = t.ttl
18let flags t = t.flags
19
20let is_expired t =
21 match t.ttl with
22 | None -> false
23 | Some expiry -> Unix.time () > expiry
24
25let is_pinned t =
26 Flags.is_pinned t.flags
27
28let is_stale t =
29 Flags.is_stale t.flags
30
31let is_temporary t =
32 Flags.is_temporary t.flags
33
34let compare_by_mtime a b =
35 Float.compare a.mtime b.mtime
36
37let compare_by_size a b =
38 Int64.compare a.size b.size
39
40let pp fmt t =
41 Format.fprintf fmt "Entry{key=%s, size=%Ld, mtime=%.1f, ttl=%s, flags=%a}"
42 t.key
43 t.size
44 t.mtime
45 (match t.ttl with
46 | None -> "never"
47 | Some exp -> Printf.sprintf "%.1f" exp)
48 Flags.pp t.flags