.. include:: ../common.defs Cache Data Structures ********************* .. cpp:class:: Vol A badly named class that represents a :term:`stripe`. .. cpp:class:: OpenDirEntry Represents an active cache object. .. cpp:class:: CacheHttpInfoVector::Slice A version of an :term:`alternate`. .. cpp:class:: CacheVC A cache operation object that intermediates between the HTTP transaction and an object in cache. Each instance is associated with a specific cached object and a specific transaction. Diagrams ======== Class diagram. .. uml:: class OpenDirEntry { CacheVC* open_writer } class CacheVC { } OpenDirEntry::open_writer *- CacheVC .. graphviz:: digraph data { rankdir=LR node [shape=plaintext] CacheVC [ label=<
\N
> ] OpenDirEntry [ label=<
\N
> ] HttpCacheAlt [ label=<
\N
m_earliest
m_cached_idx
> ] FragmentDescriptor [ label=<
\N
m_key
m_offset
⊤m_flags
⊢.cached_p
> ] Slice [ label=<
\N
_writers
_active
_waiting
_content_buffers
_wait_idx_min
_wait_idx_max
_gen
⊤_flags
⊢.dirty
> ] HttpCacheAlt:m_earliest -> FragmentDescriptor:name [dir=back,arrowtail=diamond] Slice:writers -> CacheVC:name [dir=back,arrowtail=odiamond,label="1:*"] Slice:active -> CacheVC:name [dir=back,arrowtail=odiamond,label="1:*"] Slice:waiting -> CacheVC:name [dir=back,arrowtail=odiamond,label="1:*"] }