]> git.ipfire.org Git - thirdparty/squid.git/blame - src/MemObject.h
Remove useless namespace semi-colons
[thirdparty/squid.git] / src / MemObject.h
CommitLineData
528b2c61 1/*
262a0e14 2 * $Id$
528b2c61 3 *
4 *
5 * SQUID Web Proxy Cache http://www.squid-cache.org/
6 * ----------------------------------------------------------
7 *
8 * Squid is the result of efforts by numerous individuals from
9 * the Internet community; see the CONTRIBUTORS file for full
10 * details. Many organizations have provided support for Squid's
11 * development; see the SPONSORS file for full details. Squid is
12 * Copyrighted (C) 2001 by the Regents of the University of
13 * California; see the COPYRIGHT file for full details. Squid
14 * incorporates software developed and/or copyrighted by other
15 * sources; see the CREDITS file for full details.
16 *
17 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License as published by
19 * the Free Software Foundation; either version 2 of the License, or
20 * (at your option) any later version.
26ac0430 21 *
528b2c61 22 * This program is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * GNU General Public License for more details.
26ac0430 26 *
528b2c61 27 * You should have received a copy of the GNU General Public License
28 * along with this program; if not, write to the Free Software
29 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
30 *
31 */
32
33#ifndef SQUID_MEMOBJECT_H
34#define SQUID_MEMOBJECT_H
35
36#include "StoreIOBuffer.h"
e877aaac 37#include "StoreIOState.h"
528b2c61 38#include "stmem.h"
a46d2c0e 39#include "CommRead.h"
aa839030 40#include "RemovalPolicy.h"
75cb38cb 41#include "HttpRequestMethod.h"
528b2c61 42
43typedef void STMCB (void *data, StoreIOBuffer wroteBuffer);
44
45class store_client;
b67e2c8c 46#if DELAY_POOLS
47#include "DelayId.h"
48#endif
528b2c61 49
62e76326 50class MemObject
51{
52
528b2c61 53public:
54 static size_t inUseCount();
b001e822 55 MEMPROXY_CLASS(MemObject);
62e76326 56
528b2c61 57 void dump() const;
528b2c61 58 MemObject(char const *, char const *);
59 ~MemObject();
60
61 void write(StoreIOBuffer, STMCB *, void *);
62 void unlinkRequest();
63 HttpReply const *getReply() const;
4a56ee8d 64 void replaceHttpReply(HttpReply *newrep);
fcc35180 65 void stat (MemBuf * mb) const;
47f6e231 66 int64_t endOffset () const;
67 int64_t size() const;
528b2c61 68 void reset();
47f6e231 69 int64_t lowestMemReaderOffset() const;
528b2c61 70 bool readAheadPolicyCanRead() const;
71 void addClient(store_client *);
62e76326 72 /* XXX belongs in MemObject::swapout, once swaphdrsz is managed
528b2c61 73 * better
74 */
47f6e231 75 int64_t objectBytesOnDisk() const;
10aeba1d 76 int64_t policyLowestOffsetToKeep(bool swap) const;
528b2c61 77 void trimSwappable();
78 void trimUnSwappable();
79 bool isContiguous() const;
b67e2c8c 80 int mostBytesWanted(int max) const;
a46d2c0e 81 void setNoDelay(bool const newValue);
b67e2c8c 82#if DELAY_POOLS
62e76326 83
b67e2c8c 84 DelayId mostBytesAllowed() const;
85#endif
528b2c61 86
87
88#if URL_CHECKSUM_DEBUG
62e76326 89
528b2c61 90 void checkUrlChecksum() const;
91#endif
92
60745f24 93 HttpRequestMethod method;
528b2c61 94 char *url;
95 mem_hdr data_hdr;
47f6e231 96 int64_t inmem_lo;
528b2c61 97 dlink_list clients;
63be0a78 98
99 /** \todo move into .cc or .cci */
0e3f3e0d 100 size_t clientCount() const {return nclients;}
101
102 bool clientIsFirst(void *sc) const {return (clients.head && sc == clients.head->data);}
103
528b2c61 104 int nclients;
62e76326 105
ecf22804 106 class SwapOut
62e76326 107 {
ecf22804 108
109 public:
47f6e231 110 int64_t queue_offset; /* relative to in-mem data */
528b2c61 111 mem_node *memnode; /* which node we're currently paging out */
62e76326 112 StoreIOState::Pointer sio;
ecf22804 113 };
62e76326 114
ecf22804 115 SwapOut swapout;
63be0a78 116
528b2c61 117 /* Read only - this reply must be preserved by store clients */
118 /* The original reply. possibly with updated metadata. */
190154cf 119 HttpRequest *request;
62e76326 120
528b2c61 121 struct timeval start_ping;
122 IRCB *ping_reply_callback;
123 void *ircb_data;
62e76326 124
26ac0430 125 struct {
528b2c61 126 STABH *callback;
127 void *data;
2fadd50d 128 } abort;
528b2c61 129 char *log_url;
130 RemovalPolicyNode repl;
131 int id;
47f6e231 132 int64_t object_sz;
528b2c61 133 size_t swap_hdr_sz;
134#if URL_CHECKSUM_DEBUG
62e76326 135
528b2c61 136 unsigned int chksum;
137#endif
62e76326 138
528b2c61 139 const char *vary_headers;
62e76326 140
a46d2c0e 141 void delayRead(DeferredRead const &);
142 void kickReads();
143
528b2c61 144private:
4a56ee8d 145 HttpReply *_reply;
4a56ee8d 146
a46d2c0e 147 DeferredReadManager deferredReads;
528b2c61 148};
149
d85b8894 150MEMPROXY_CLASS_INLINE(MemObject);
b001e822 151
63be0a78 152/** global current memory removal policy */
aa839030 153extern RemovalPolicy *mem_policy;
154
528b2c61 155#endif /* SQUID_MEMOBJECT_H */