.. 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=<
>
]
OpenDirEntry [ label=< >
]
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:*"]
}