Module Tjr_pcache.Pcache_intf

Main pcache interfaces; don't open (defines buf and buf_ops)

val buf_ops : Bigstring.t Tjr_fs_shared.Buf_ops.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; >; >