Builds the window. It asks nothing of the store until attach().
the realm hooks, the containers, the bound and the registry
Puts an entry the STORE holds: not a write. For a restore and for a row another process wrote.
the realm id
the normalised DN
the entry
Whether any windowed entry of a realm holds an attribute: a change made here first, then the store.
the realm id
the attribute name, lower-cased as stored
true when one does
Gives the window its bridge, once the store is open, and drops every CLEAN answer given before it — an absence recorded before the store could be asked is not an absence.
the synchronous question to the store
Whether the store can be asked yet.
true once attach() has run
Whether a key has a change here not yet written, or one in flight, or was handed out since the last flush — the states in which a row from another process must wait for the flush rather than replace it.
the realm id
the normalised DN
true when the flush must go first
A realm's count for ldap.maxEntries: the store's, read again when the
last reading is more than ten seconds old, plus this process's own net
since. Stale by at most that much for another process's creates; the
ceiling is a ceiling, not a quota to the entry.
the realm id
the count
Empties a realm: the restore's replaceRealm(). Changes not yet
written are dropped with the rest — a restore is "this is the
directory".
the realm id
What the flush writes for the windowed keys, and the release of every entry handed out and left unchanged.
the journal's keys (without a realm), or null when a write named nothing: then every held and evicted-but-held entry is a candidate
the upserts (entry, json, base) and deletes (base)
The flush wrote what collect() answered: each base is what was sent,
and a key unchanged since is released. A key the store answered
differently for (outcomes) is forgotten, or — changed again since —
given the store's row as its base.
what collect() answered
Optionaloutcomes: { entry?: Entry; key: string; outcome: string; realm: string }[]
the driver's { realm, key, outcome, entry } rows
How many entries are strictly under a base, from the store's count and this process's changes not yet written.
the realm id
the base's normalised DN
the count
Removes a key: a write, pinned until the flush writes it.
the realm id
the normalised DN
true when it held an entry
Hands fn the NAMES of the entries under a base in the store, a page
at a time — { key, dn, origin, uid }, no entry read whole — and counts
the ones fn answers true for. For the identity register a windowed
worker fills at start (#349).
the realm id
the base's normalised DN
called with each name; its truthy answers are counted
how many fn answered true for
Calls fn for each RESIDENT entry of a realm: for a walk whose filter
can only match an entry outside the windowed containers.
the realm id
called with each entry and its key
A realm's count read from the store now, for ldap.maxEntries and for
a report.
the realm id
the count
The facade ldap_server.js holds as entries: the ambient realm's view
for every Map member, realmMap(id) for a named realm, and the window
itself as window.
the facade
The flush failed: the keys it took are still changed, and are taken again by the next one.
what collect() answered
The windowed entries of a realm matching an indexed question, as this process holds them.
the realm id
one of persistence/directory_queries.js's queries
its arguments
the service's own rule, asked of each candidate
[{ key, entry }], in key order, local additions last
Forgets a key: a row another process wrote or removed, read again when next asked for. A resident key is removed.
the realm id
the normalised DN
true when something was held
The entry at a key, or undefined.
the realm id
the normalised DN
the entry
Whether anything is under a key.
the realm id
the normalised DN
true when something is
Whether a key holds an entry.
the realm id
the normalised DN
true when it does
The windowed entries under a base that hold an attribute, as this
process holds them: the store's holders a page at a time, each read back
through the window and asked predicate, and changes made here added.
the realm id
the base's normalised DN (a windowed container, usually)
the attribute name, lower-cased as stored
the service's own rule, asked of each candidate
[{ key, entry }]
Whether a key of a realm is windowed: strictly under one of its windowed containers.
the realm id
the normalised DN
true when windowed
Another process changed a key this one is busy with: once this process's flush has let it go — written and merged by the store, or found unchanged — it is dropped, and read again when next asked for. Without this a key merely HANDED OUT when the change arrived would keep the older copy until it was evicted.
the realm id
the normalised DN
The entry held at a key, without asking the store and without handing
it out: persistence.js's entryAt() for a windowed key.
the realm id
the normalised DN
the entry, or null
The resident entries of a realm, keyed: what persistence.js's write
shadow covers. A windowed entry is never in that shadow — the window
holds its own base.
the realm id
[{ key, entry }]
Puts an entry at a key: a write, pinned until the flush writes it.
the realm id
the normalised DN
the entry
How many entries a realm holds, from the store's count of the windowed containers the first time and this process's own net since.
the realm id
the count
The window's figures, for a status page and tests.
the LRU's figures, and the dirty, in-flight, handed-out and evicted-but-held counts
A Map-shaped view of one realm.
the realm id
the view
Walks a realm's entries at or under a base, lazily.
the realm id
the base's normalised DN, or '' for the whole realm
OptionalreadOnly: boolean
true when the caller edits nothing it is handed
an iterator of [key, entry]
The directory as a bounded window onto the store, in the shape of
realms.map()(#349).