package tcpip
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=d452e23f4e62c8b32c977f742e72c50fe673b82e23dc80b29d8263be764d2c72
sha512=9a4aeb5c7ec0392524d1d261026e5de047dec09054f2dca63d9743aed1d27ccfd655ae693554091b4ef7d9eabfeef218e71e8bf13ea8304ebedd8e8a7d4f484a
doc/tcpip.ipv4/Fragments/Cache/index.html
Module Fragments.Cache
Source
include Lru.F.S with type k = K.t and type v = V.t
Functional LRU map
A map.
Limiting the weight of bindings
capacity t
is the maximum combined weight of bindings that trim
will retain.
resize cap t
sets t
's capacity to cap
, while leaving the bindings unchanged.
trim t
is t'
, where weight t' <= capacity t'
.
This is achieved by discarding bindings in LRU-to-MRU order.
Access by k
promote k t
is t
with the binding for k
promoted to most-recently-used, or t
if k
is not bound in t
.
add k v t
adds the binding k -> v
to t
as the most-recently-used binding.
Note add
does not remove bindings. To ensure that the resulting map is not over capacity, compose with trim
.
pop k t
is (v, t')
, where v
is the value bound to k
, and t'
is t
without the binding k -> t
, or None
if k
is not bound in t
.
Access to least-recently-used bindings
lru t
is the least-recently-used binding in t
, or None
, when t
is empty.
pop_lru t
is ((k, v), t'
, where (k, v)
is lru t
, and t'
is t
without that binding.
Aggregate access
fold f z t
is f k0 v0 (... (f kn vn z))
, where k0 -> v0
is LRU and kn -> vn
is MRU.
fold_k f z t
folds in key-increasing order, ignoring the recently-used ordering.
Note fold_k
is faster than fold
.
iter f t
applies f
to all the bindings in t
in in LRU-to-MRU order.
iter_k f t
applies f in key-increasing order, ignoring the recently-used ordering.
Note iter_k
is faster than iter
.
Conversions
Pretty-printing
val pp :
?pp_size:(Format.formatter -> (int * int) -> unit) ->
?sep:(Format.formatter -> unit -> unit) ->
(Format.formatter -> (k * v) -> unit) ->
Format.formatter ->
t ->
unit