type t val create : unit -> t val restore : string -> t (* Restores the database from a file *) val save : t -> string -> unit (* Saves the database into a file *) val lookup : t -> string -> (int * float * float * string) (* lookup db url: * Finds the entry for 'url' in 'db' or raises Not_found. * It returns a tuple (code, time, mimetype): * - code: the HTTP code returned. * 0 means: Not yet requested. * - time_ok: when the last successful access happened * 0.0 means: Never * - time_access: when the last access happened * 0.0 means: Never * - mimetype: the MIME type of the entry * "" means: unknown *) val add : t -> string -> unit (* add db url: Adds an entry *) val update : t -> string -> int -> float -> float -> string -> unit (* update db url code time_ok time_access mimetype: * Changes the entry for 'url' in 'db'. * Raises Not_found if an entry for 'url' does not exist. *) val iter : t -> float -> float -> (string * int * float * float * string) Stream.t (* iter db f age interval: * Iterates over all entries of 'db', and includes all entries into * the resulting stream that * do not have a successful HTTP code, or are older than 'age' seconds; * but the access time must not be older than 'interval'. * The stream elements are: url,code,time_ok,time_access,mimetype. * While the stream is being consumed, it is allowed to modify * the contents of 'db'; the changed or added entries * will be reached if they match the criterion. * The iteration terminates normally if no entry currently matches the * criterion. [The returned number is the suggested period of time to wait * until the next invocation of 'iter' makes sense. ... TODO ] *)