Liking cljdoc? Tell your friends :D

com.blockether.vis.internal.gateway.replay-ring

The bounded replay ring of one session: frames in ascending seq, oldest first.

It behaves like a PersistentQueue: conj appends, peek and pop take the oldest frame. Two operations make it cheap to keep one materialized frame per key:

  • Each frame can have a replace key (key-fn). The ring counts the frames of each key.
  • remove-key scans back from the newest frame only until it has found every frame of that key. A replaced frame is almost always near the tail.

The frames are a persistent vector and an offset of popped slots. A pop clears its slot, so an evicted frame never stays reachable. The ring copies the live frames to a new vector once the offset reaches [[compact-at]].

A subvec of the whole history is not used: it retains the full backing vector.

The bounded replay ring of one session: frames in ascending seq, oldest first.

It behaves like a `PersistentQueue`: `conj` appends, `peek` and `pop` take the
oldest frame. Two operations make it cheap to keep one materialized frame per key:

- Each frame can have a replace key (`key-fn`). The ring counts the frames of each key.
- [[remove-key]] scans back from the newest frame only until it has found every
  frame of that key. A replaced frame is almost always near the tail.

The frames are a persistent vector and an offset of popped slots. A pop clears its
slot, so an evicted frame never stays reachable. The ring copies the live frames to
a new vector once the offset reaches [[compact-at]].

A `subvec` of the whole history is not used: it retains the full backing vector.
raw docstring

remove-frameclj

(remove-frame ring frame)

ring without the frame identical to frame.

`ring` without the frame identical to `frame`.
sourceraw docstring

remove-keyclj

(remove-key ring k)

[ring removed]: ring without its frames of replace key k, and those frames in ring order. Scans back from the newest frame until it has seen all of them.

`[ring removed]`: `ring` without its frames of replace key `k`, and those frames in
ring order. Scans back from the newest frame until it has seen all of them.
sourceraw docstring

ringclj

(ring frames key-fn)

frames as a ring that keys its frames with key-fn. A ring with this key-fn comes back unchanged.

`frames` as a ring that keys its frames with `key-fn`. A ring with this `key-fn`
comes back unchanged.
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close