File: README

package info (click to toggle)
trafficserver 9.2.5%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 53,008 kB
  • sloc: cpp: 345,484; ansic: 31,134; python: 24,200; sh: 7,271; makefile: 3,045; perl: 2,261; java: 277; pascal: 119; sql: 94; xml: 2
file content (30 lines) | stat: -rw-r--r-- 2,854 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
LRU Design
==========

This got slightly complex, because I tried to be clever. But the concept is easy, a
list and an unordered map keeps the LRU state.


                                                    +-----------------------+    +----------------------------------+
                                                    |        LRUList        |    |              LRUMap              |
                                                    |        -------        |    |              ------              |
                                                    |+---------------------+|    |+--------------------------------+|
+---------------------+   +---------------------+   ||      LRUEntry       <+----+| {LRUHash *, LRUList::iterator} ||
|       LRUHash       |   |      LRUEntry       |   |+---------------------+|    |+--------------------------------+|
|      --------       |<--+      --------       |<--+|      LRUEntry       <+----+| {LRUHash *, LRUList::iterator} ||
|  u_char _hash[20]   |   | <LRUHash, unsigned> |   |+---------------------+|    |+--------------------------------+|
+---------------------+   +---------------------+   ||      LRUEntry       <+----+| {LRUHash *, LRUList::iterator} ||
                            +-----------------+     |+---------------------+|    |+--------------------------------+|
                            | first = LRUHash |     |                       |    |                                  |
                            |second = unsigned|     |           *           |    |                *                 |
                            +-----------------+     |           *           |    |                *                 |
                                                    |           *           |    |                *                 |
                                                    |                       |    |                                  |
                                                    |+---------------------+|    |+--------------------------------+|
                                                    ||      LRUEntry       ||    || {LRUHash *, LRUList::iterator} ||
                                                    |+---------------------+|    |+--------------------------------+|
                                                    +-----------------------+    +----------------------------------+
                                                                                     +--------------------------+
                                                                                     |    first  = LRUHash*     |
                                                                                     |second = LRUList::iterator|
                                                                                     +--------------------------+