]> git.ipfire.org Git - thirdparty/squid.git/blame - src/StoreSwapLogData.h
Renamed squid.h to squid-old.h and config.h to squid.h
[thirdparty/squid.git] / src / StoreSwapLogData.h
CommitLineData
51ee7c82 1/*
262a0e14 2 * $Id$
51ee7c82 3 *
4 * SQUID Web Proxy Cache http://www.squid-cache.org/
5 * ----------------------------------------------------------
6 *
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.
15 *
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.
26ac0430 20 *
51ee7c82 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.
26ac0430 25 *
51ee7c82 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.
29 *
30 * Copyright (c) 2003, Robert Collins <robertc@squid-cache.org>
31 */
32
33#ifndef SQUID_STORESWAPLOGDATA_H
34#define SQUID_STORESWAPLOGDATA_H
35
63be0a78 36/**
37 \defgroup FileFormatSwapStateAPI swap.state File Structure
38 \ingroup FileSystems
39 \section ImplementationNotes Implementation Notes
40 \par
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.
26ac0430 46 *
63be0a78 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).
26ac0430 54 *
63be0a78 55 \par
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.
60 */
61
f7f3304a 62#include "squid-old.h"
51ee7c82 63
64/*
65 * Do we need to have the dirn in here? I don't think so, since we already
26ac0430 66 * know the dirn ..
51ee7c82 67 */
63be0a78 68/**
69 \ingroup FielFormatSwapStateAPI
70 \note This information is current as of version 2.2.STABLE4
71 *
72 \li Binary format on disk.
73 \li DO NOT randomly alter.
74 \li DO NOT add ANY virtual's.
75 *
76 \par
77 * Defines the structure of a binary swap.state file entry.
78 *
79 \note StoreSwapLogData entries are written in native machine byte order
80 * They are not necessarily portable across architectures.
51ee7c82 81 */
51ee7c82 82class StoreSwapLogData
83{
84
85public:
b001e822 86 MEMPROXY_CLASS(StoreSwapLogData);
51ee7c82 87 StoreSwapLogData();
63be0a78 88
89 /**
90 * Either SWAP_LOG_ADD when an object is added to the disk storage,
91 * or SWAP_LOG_DEL when an object is deleted.
92 */
51ee7c82 93 char op;
63be0a78 94
95 /**
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.
101 */
51ee7c82 102 sfileno swap_filen;
63be0a78 103
104 /**
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).
110 */
51ee7c82 111 time_t timestamp;
63be0a78 112
113 /**
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()).
117 */
51ee7c82 118 time_t lastref;
63be0a78 119
120 /**
121 * The value of the response's Expires: header, if any.
122 * If the response does not have an Expires: header, this
123 * is set to -1.
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.
128 */
51ee7c82 129 time_t expires;
63be0a78 130
131 /**
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.
135 */
51ee7c82 136 time_t lastmod;
63be0a78 137
138 /**
139 * This is the number of bytes that the object occupies on
140 * disk. It includes the Squid "swap file header".
141 */
47f6e231 142 uint64_t swap_file_sz;
63be0a78 143
144 /**
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.
148 */
f45dd259 149 uint16_t refcount;
63be0a78 150
151 /**
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.
155 */
f45dd259 156 uint16_t flags;
63be0a78 157
158 /**
159 * The 128-bit MD5 hash for this object.
160 */
c3031d67 161 unsigned char key[SQUID_MD5_DIGEST_LENGTH];
51ee7c82 162};
163
d85b8894 164MEMPROXY_CLASS_INLINE(StoreSwapLogData);
b001e822 165
63be0a78 166/// \ingroup FileFormatSwapStateAPI
47f6e231 167class StoreSwapLogHeader
168{
169public:
26ac0430
AJ
170 StoreSwapLogHeader();
171 char op;
172 int version;
173 int record_size;
47f6e231 174};
175
176
51ee7c82 177#endif /* SQUID_STORESWAPLOGDATA_H */