]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/StoreSwapLogData.h
4 * SQUID Web Proxy Cache http://www.squid-cache.org/
5 * ----------------------------------------------------------
7 * Squid is the result of efforts by numerous individuals from
8 * the Internet community; see the CONTRIBUTORS file for full
9 * details. Many organizations have provided support for Squid's
10 * development; see the SPONSORS file for full details. Squid is
11 * Copyrighted (C) 2001 by the Regents of the University of
12 * California; see the COPYRIGHT file for full details. Squid
13 * incorporates software developed and/or copyrighted by other
14 * sources; see the CREDITS file for full details.
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2 of the License, or
19 * (at your option) any later version.
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
26 * You should have received a copy of the GNU General Public License
27 * along with this program; if not, write to the Free Software
28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
30 * Copyright (c) 2003, Robert Collins <robertc@squid-cache.org>
33 #ifndef SQUID_STORESWAPLOGDATA_H
34 #define SQUID_STORESWAPLOGDATA_H
37 \defgroup FileFormatSwapStateAPI swap.state File Structure
39 \section ImplementationNotes Implementation Notes
41 * When writing an object to disk, we must first write the meta data.
42 * This is done with a couple of functions. First, storeSwapMetaPack()
43 * takes a StoreEntry as a parameter and returns a tlv linked
44 * list. Second, storeSwapMetaPack() converts the tlv list
45 * into a character buffer that we can write.
47 \note MemObject has a MemObject::swap_hdr_sz.
48 * This value is the size of that character buffer; the size of the
49 * swap file meta data. The StoreEntry has a member
50 * StoreEntry::swap_file_sz that represents the size of the disk file.
51 * Thus, the size of the object "content" is
52 \code StoreEntry->swap_file_sz - MemObject->swap_hdr_sz; \endcode
53 \note The swap file content includes the HTTP reply headers and the HTTP reply body (if any).
56 * When reading a swap file, there is a similar process to extract
57 * the swap meta data. First, storeSwapMetaUnpack() converts a
58 * character buffer into a tlv linked list. It also tells us
59 * the value for MemObject->swap_hdr_sz.
62 #include "squid-old.h"
65 * Do we need to have the dirn in here? I don't think so, since we already
69 \ingroup FielFormatSwapStateAPI
70 \note This information is current as of version 2.2.STABLE4
72 \li Binary format on disk.
73 \li DO NOT randomly alter.
74 \li DO NOT add ANY virtual's.
77 * Defines the structure of a binary swap.state file entry.
79 \note StoreSwapLogData entries are written in native machine byte order
80 * They are not necessarily portable across architectures.
82 class StoreSwapLogData
86 MEMPROXY_CLASS(StoreSwapLogData
);
90 * Either SWAP_LOG_ADD when an object is added to the disk storage,
91 * or SWAP_LOG_DEL when an object is deleted.
96 * The 32-bit file number which maps to a pathname.
97 * Only the low 24-bits are relevant. The high 8-bits are
98 * used as an index to an array of storage directories, and
99 * are set at run time because the order of storage directories
100 * may change over time.
105 * A 32-bit Unix time value that represents the time when
106 * the origin server generated this response. If the response
107 * has a valid Date: header, this timestamp corresponds
108 * to that time. Otherwise, it is set to the Squid process time
109 * when the response is read (as soon as the end of headers are found).
114 * The last time that a client requested this object.
115 * Strictly speaking, this time is set whenever the StoreEntry
116 * is locked (via storeLockObject()).
121 * The value of the response's Expires: header, if any.
122 * If the response does not have an Expires: header, this
124 * If the response has an invalid (unparseable)
125 * Expires: header, it is also set to -1. There are some cases
126 * where Squid sets expires to -2. This happens for the
127 * internal "netdb" object and for FTP URL responses.
132 * The value of the response's Last-modified: header, if any.
133 * This is set to -1 if there is no Last-modified: header,
134 * or if it is unparseable.
139 * This is the number of bytes that the object occupies on
140 * disk. It includes the Squid "swap file header".
142 uint64_t swap_file_sz
;
145 * The number of times that this object has been accessed (referenced).
146 * Since its a 16-bit quantity, it is susceptible to overflow
147 * if a single object is accessed 65,536 times before being replaced.
152 * A copy of the StoreEntry flags field. Used as a sanity
153 * check when rebuilding the cache at startup. Objects that
154 * have the KEY_PRIVATE flag set are not added back to the cache.
159 * The 128-bit MD5 hash for this object.
161 unsigned char key
[SQUID_MD5_DIGEST_LENGTH
];
164 MEMPROXY_CLASS_INLINE(StoreSwapLogData
);
166 /// \ingroup FileFormatSwapStateAPI
167 class StoreSwapLogHeader
170 StoreSwapLogHeader();
177 #endif /* SQUID_STORESWAPLOGDATA_H */