Module Tjr_pcache.Pcache_intf
Main pcache interfaces; don't open (defines buf and buf_ops)
module Detach_info : sig ... end
include Detach_info
type ('k, 'v, 'r, 'kvop_map) detach_info
=
{
root_ptr : 'r;
past_map : 'kvop_map;
current_ptr : 'r;
current_map : 'kvop_map;
}
The result of "detaching" the map. We get the abstract map for all but the current node, and information about the current node.
type ('k, 'v, 'r, 'kvop_map) t
= ('k, 'v, 'r, 'kvop_map) detach_info
module Pcache_ops : sig ... end
include Pcache_ops
type ('k, 'v, 'r, 'kvop_map, 't) pcache_ops
=
{
find : 'k -> ('v option, 't) Tjr_monad.m;
insert : 'k -> 'v -> (unit, 't) Tjr_monad.m;
delete : 'k -> (unit, 't) Tjr_monad.m;
detach : unit -> (('k, 'v, 'r, 'kvop_map) detach_info, 't) Tjr_monad.m;
blk_len : unit -> (int, 't) Tjr_monad.m;
get_origin : unit -> ('r Tjr_plist.Pl_origin.t, 't) Tjr_monad.m;
pcache_sync : unit -> (unit, 't) Tjr_monad.m;
}
For the detach operation, we get the map upto the current node, and the map for the current node. NOTE if root_ptr = current_ptr, then nothing was detached.
module Pcache_state : sig ... end
include Pcache_state
type ('r, 'kvop_map) pcache_state
=
{
root_ptr : 'r;
past_map : 'kvop_map;
current_ptr : 'r;
current_map : 'kvop_map;
}
Pcache state, in addition to the plist
type ('r, 'kvop_map) t
= ('r, 'kvop_map) pcache_state
val empty_pcache_state : ptr:'a -> empty:'b -> ('a, 'b) pcache_state
Create an empty pcache state (without writing to disk)
Pcache factory
type ('a, 'k, 'v, 'r, 'buf, 'kvop_map, 't) pcache_factory
= < note_these_types_are_equal : 'a -> ('k, 'v) Tjr_fs_shared.Kvop.kvop -> unit; kvop_map_ops : ('k, ('k, 'v) Tjr_fs_shared.Kvop.kvop, 'kvop_map) Tjr_lib.Tjr_map.map_ops; empty_pcache : 'r -> ('r, 'kvop_map) pcache_state; simple_plist_factory : ('a, 'r, 'buf, 'buf, 't) Tjr_plist.simple_plist_factory; plist_to_pcache : simple_plist_ops:('a, 'r, 't) Tjr_plist.simple_plist_ops -> with_state:(('r, 'kvop_map) pcache_state, 't) Tjr_monad.with_state -> ('k, 'v, 'r, 'kvop_map, 't) pcache_ops; with_ : blk_dev_ops:('r, 'buf, 't) Tjr_fs_shared.blk_dev_ops -> barrier:(unit -> (unit, 't) Tjr_monad.m) -> freelist_ops:('r, 't) Tjr_plist.freelist_ops_af -> < create : unit -> (('k, 'v, 'r, 'kvop_map, 't) pcache_ops, 't) Tjr_monad.m; restore : hd:'r -> (('k, 'v, 'r, 'kvop_map, 't) pcache_ops, 't) Tjr_monad.m; >; >