Implement similarity code.
[virt-similarity.git] / cache.mli
1 (* virt-similarity
2  * Copyright (C) 2013 Red Hat Inc.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along
15  * with this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  *)
18
19 (** Handle the cache file. *)
20
21 type cache
22 (** The immutable cache, which is a map of filename to {!hashes}. *)
23
24 type hashes = string array
25 (** An array of block hashes.  One array for each disk image. *)
26
27 type filename = string
28 (** A filename. *)
29
30 val read_cache_file : unit -> cache
31 (** Read the cache file. *)
32
33 val write_cache_file : cache -> unit
34 (** Write the cache file. *)
35
36 val get_hash : cache -> filename -> hashes option
37 (** Get the hash for a particular filename from the cache. *)
38
39 val update_hash : cache -> filename -> hashes -> cache
40 (** Set or update the hashes corresponding to filename in the cache.
41     Note that since {!cache} is immutable, this returns a new cache
42     object. *)