Store.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2018 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 #ifndef SQUID_STORE_H
10 #define SQUID_STORE_H
11 
12 #include "base/Packable.h"
13 #include "base/Range.h"
14 #include "base/RefCount.h"
15 #include "comm/forward.h"
16 #include "CommRead.h"
17 #include "hash.h"
18 #include "http/forward.h"
19 #include "http/RequestMethod.h"
20 #include "HttpReply.h"
21 #include "MemObject.h"
22 #include "RemovalPolicy.h"
23 #include "store/Controller.h"
24 #include "store/forward.h"
25 #include "store_key_md5.h"
26 #include "StoreIOBuffer.h"
27 #include "StoreStats.h"
28 
29 #if USE_SQUID_ESI
30 #include "esi/Element.h"
31 #endif
32 
33 #include <ostream>
34 
35 class AsyncCall;
36 class HttpRequest;
37 class RequestFlags;
38 
40 
41 class StoreEntry : public hash_link, public Packable
42 {
43 
44 public:
46  bool checkDeferRead(int fd) const;
47 
48  virtual const char *getMD5Text() const;
49  StoreEntry();
50  virtual ~StoreEntry();
51 
52  virtual HttpReply const *getReply() const;
53  virtual void write (StoreIOBuffer);
54 
60  virtual bool isEmpty() const {
61  assert (mem_obj);
62  return mem_obj->endOffset() == 0;
63  }
64  virtual bool isAccepting() const;
65  virtual size_t bytesWanted(Range<size_t> const aRange, bool ignoreDelayPool = false) const;
67  void lengthWentBad(const char *reason);
68  virtual void complete();
69  virtual store_client_t storeClientType() const;
70  virtual char const *getSerialisedMetaData();
72  void storeErrorResponse(HttpReply *reply);
73  void replaceHttpReply(HttpReply *, bool andStartWriting = true);
74  void startWriting();
75  virtual bool mayStartSwapOut();
77  virtual void trimMemory(const bool preserveSwappable);
78 
79  // called when a decision to cache in memory has been made
80  void memOutDecision(const bool willCacheInRam);
81  // called when a decision to cache on disk has been made
82  void swapOutDecision(const MemObject::SwapOut::Decision &decision);
83 
84  void abort();
85  bool makePublic(const KeyScope keyScope = ksDefault);
86  void makePrivate(const bool shareable);
90  void clearPrivate();
91  bool setPublicKey(const KeyScope keyScope = ksDefault);
95  void clearPublicKeyScope();
96 
98  const cache_key *publicKey() const {
99  return (!EBIT_TEST(flags, KEY_PRIVATE)) ?
100  reinterpret_cast<const cache_key*>(key): // may be nil
101  nullptr;
102  }
103 
107  void setPrivateKey(const bool shareable, const bool permanent);
108 
109  void expireNow();
112  void releaseRequest(const bool shareable = false);
113  void negativeCache();
114  bool cacheNegatively();
115  void invokeHandlers();
116  void cacheInMemory();
117  void swapOut();
119  bool swappingOut() const { return swap_status == SWAPOUT_WRITING; }
121  bool swappedOut() const { return swap_status == SWAPOUT_DONE; }
122  void swapOutFileClose(int how);
123  const char *url() const;
127  bool checkCachable();
128  int checkNegativeHit() const;
129  int locked() const;
130  int validToSend() const;
131  bool memoryCachable();
132 
135  void createMemObject();
136 
138  void createMemObject(const char *storeId, const char *logUri, const HttpRequestMethod &aMethod);
139 
141  void ensureMemObject(const char *storeId, const char *logUri, const HttpRequestMethod &aMethod);
142 
143  void dump(int debug_lvl) const;
144  void hashDelete();
145  void hashInsert(const cache_key *);
146  void registerAbort(STABH * cb, void *);
147  void reset();
149  bool timestampsSet();
150  void unregisterAbort();
151  void destroyMemObject();
152  int checkTooSmall();
153 
155 
156  void setNoDelay (bool const);
157  void lastModified(const time_t when) { lastModified_ = when; }
159  time_t lastModified() const {
160  // may still return -1 if timestamp is not set
161  return lastModified_ < 0 ? timestamp : lastModified_;
162  }
164  const char *describeTimestamps() const;
165  // TODO: consider removing currently unsupported imslen parameter
166  bool modifiedSince(const time_t ims, const int imslen = -1) const;
168  bool hasIfMatchEtag(const HttpRequest &request) const;
170  bool hasIfNoneMatchEtag(const HttpRequest &request) const;
172  bool hasEtag(ETag &etag) const;
173 
175  Store::Disk &disk() const;
178  bool hasDisk(const sdirno dirn = -1, const sfileno filen = -1) const;
181  void attachToDisk(const sdirno, const sfileno, const swap_status_t);
184  void detachFromDisk();
185 
187  bool hasTransients() const { return mem_obj && mem_obj->xitTable.index >= 0; }
189  bool hasMemStore() const { return mem_obj && mem_obj->memCache.index >= 0; }
190 
193  bool collapsingInitiator() const;
194 
197  /* START OF ON-DISK STORE_META_STD TLV field */
198  time_t timestamp;
199  time_t lastref;
200  time_t expires;
201 private:
202  time_t lastModified_;
203 public:
204  uint64_t swap_file_sz;
205  uint16_t refcount;
206  uint16_t flags;
207  /* END OF ON-DISK STORE_META_STD */
208 
210  sfileno swap_filen:25; // keep in sync with SwapFilenMax
211 
213 
215 
217 
219 
221 
222 public:
223  static size_t inUseCount();
224  static void getPublicByRequestMethod(StoreClient * aClient, HttpRequest * request, const HttpRequestMethod& method);
225  static void getPublicByRequest(StoreClient * aClient, HttpRequest * request);
226  static void getPublic(StoreClient * aClient, const char *uri, const HttpRequestMethod& method);
227 
228  virtual bool isNull() const { return false; } // TODO: Replace with nullptr.
229 
230  void *operator new(size_t byteCount);
231  void operator delete(void *address);
232 #if USE_SQUID_ESI
233 
235 #endif
236  virtual int64_t objectLen() const;
237  virtual int64_t contentLen() const;
238 
241  void lock(const char *context);
242 
245  int unlock(const char *context);
246 
248  int locks() const { return static_cast<int>(lock_count); }
249 
251  void touch();
252 
258  virtual void release(const bool shareable = false);
259 
264  void abandon(const char *context) { if (!locked()) doAbandon(context); }
265 
268  bool mayStartHitting() const {
270  }
271 
272 #if USE_ADAPTATION
273  void deferProducer(const AsyncCall::Pointer &producer);
276  void kickProducer();
277 #endif
278 
279  /* Packable API */
280  virtual void append(char const *, int);
281  virtual void vappendf(const char *, va_list);
282  virtual void buffer();
283  virtual void flush();
284 
285 protected:
287 
290  void checkDisk() const;
291 
292 private:
293  void doAbandon(const char *context);
294  bool checkTooBig() const;
295  void forcePublicKey(const cache_key *newkey);
296  StoreEntry *adjustVary();
297  const cache_key *calcPublicKey(const KeyScope keyScope);
298 
300 
301  unsigned short lock_count; /* Assume < 65536! */
302 
309 
310 #if USE_ADAPTATION
313 #endif
314 
315  bool validLength() const;
316  bool hasOneOfEtags(const String &reqETags, const bool allowWeakMatch) const;
317 
318  friend std::ostream &operator <<(std::ostream &os, const StoreEntry &e);
319 };
320 
321 std::ostream &operator <<(std::ostream &os, const StoreEntry &e);
322 
324 class NullStoreEntry:public StoreEntry
325 {
326 
327 public:
328  static NullStoreEntry *getInstance();
329 
330  const char *getMD5Text() const;
331  HttpReply const *getReply() const { return NULL; }
333 
334  bool isEmpty () const {return true;}
335 
336  /* StoreEntry API */
337  virtual bool isNull() const { return true; }
338  virtual size_t bytesWanted(Range<size_t> const aRange, bool) const { return aRange.end; }
339 
340  void operator delete(void *address);
341  void complete() {}
342 
343 private:
345 
346  char const *getSerialisedMetaData();
347  virtual bool mayStartSwapOut() { return false; }
348 
349  void trimMemory(const bool) {}
350 
352 };
353 
355 typedef void (*STOREGETCLIENT) (StoreEntry *, void *cbdata);
356 
357 namespace Store {
358 
361 class EntryGuard {
362 public:
365  EntryGuard(Entry *entry, const char *context):
366  entry_(entry), context_(context) {
367  assert(!entry_ || entry_->locked());
368  }
369 
371  if (entry_) {
372  // something went wrong -- the caller did not unlockAndReset() us
373  onException();
374  }
375  }
376 
377  EntryGuard(EntryGuard &&) = delete; // no copying or moving (for now)
378 
381  Entry *get() {
382  return entry_;
383  }
384 
388  void unlockAndReset(const char *resetContext = nullptr) {
389  if (entry_) {
390  entry_->unlock(resetContext ? resetContext : context_);
391  entry_ = nullptr;
392  }
393  }
394 
395 private:
396  void onException() noexcept;
397 
398  Entry *entry_;
399  const char *context_;
400 };
401 
402 void Stats(StoreEntry *output);
403 void Maintain(void *unused);
404 }; // namespace Store
405 
407 size_t storeEntryInUse();
408 
410 const char *storeEntryFlags(const StoreEntry *);
411 
413 void storeEntryReplaceObject(StoreEntry *, HttpReply *);
414 
416 StoreEntry *storeGetPublic(const char *uri, const HttpRequestMethod& method);
417 
419 StoreEntry *storeGetPublicByRequest(HttpRequest * request, const KeyScope keyScope = ksDefault);
420 
422 StoreEntry *storeGetPublicByRequestMethod(HttpRequest * request, const HttpRequestMethod& method, const KeyScope keyScope = ksDefault);
423 
426 StoreEntry *storeCreateEntry(const char *, const char *, const RequestFlags &, const HttpRequestMethod&);
427 
430 StoreEntry *storeCreatePureEntry(const char *storeId, const char *logUrl, const HttpRequestMethod&);
431 
433 void storeInit(void);
434 
436 void storeConfigure(void);
437 
439 void storeFreeMemory(void);
440 
442 int expiresMoreThan(time_t, time_t);
443 
445 void storeAppendPrintf(StoreEntry *, const char *,...) PRINTF_FORMAT_ARG2;
446 
448 void storeAppendVPrintf(StoreEntry *, const char *, va_list ap);
449 
451 int storeTooManyDiskFilesOpen(void);
452 
454 void storeHeapPositionUpdate(StoreEntry *, SwapDir *);
455 
457 void storeSwapFileNumberSet(StoreEntry * e, sfileno filn);
458 
460 void storeFsInit(void);
461 
463 void storeFsDone(void);
464 
466 void storeReplAdd(const char *, REMOVALPOLICYCREATE *);
467 
472 extern FREE destroyStoreEntry;
473 
475 void storeGetMemSpace(int size);
476 
477 #endif /* SQUID_STORE_H */
478 
sdirno swap_dirn
Definition: Store.h:212
bool shareableWhenPrivate
Definition: Store.h:308
static MemAllocator * pool
Definition: Store.h:299
void detachFromDisk()
Definition: store.cc:2034
void storeAppendPrintf(StoreEntry *, const char *,...) PRINTF_FORMAT_ARG2
Definition: store.cc:893
virtual bool isAccepting() const
Definition: store.cc:2059
void makePrivate(const bool shareable)
Definition: store.cc:150
#define assert(EX)
Definition: assert.h:17
virtual bool isNull() const
Definition: Store.h:337
store_client_t storeClientType() const
Definition: Store.h:344
StoreEntry * storeGetPublic(const char *uri, const HttpRequestMethod &method)
Definition: store.cc:534
void const char HLPCB * callback
Definition: stub_helper.cc:16
void touch()
update last reference timestamp and related Store metadata
Definition: store.cc:442
static void getPublicByRequestMethod(StoreClient *aClient, HttpRequest *request, const HttpRequestMethod &method)
Definition: store.cc:498
store_status_t
Definition: enums.h:45
int validToSend() const
Definition: store.cc:1432
StoreEntry * storeCreatePureEntry(const char *storeId, const char *logUrl, const HttpRequestMethod &)
Definition: store.cc:776
virtual void release(const bool shareable=false)
Definition: store.cc:1207
int unlock(const char *context)
Definition: store.cc:460
Definition: ETag.h:17
Definition: cbdata.cc:60
void(* STOREGETCLIENT)(StoreEntry *, void *cbdata)
Definition: Store.h:355
int locks() const
returns a local concurrent use counter, for debugging
Definition: Store.h:248
virtual int64_t contentLen() const
Definition: store.cc:1680
EntryGuard(Entry *entry, const char *context)
Definition: Store.h:365
void storeEntryReplaceObject(StoreEntry *, HttpReply *)
bool timestampsSet()
Definition: store.cc:1472
bool collapsingInitiator() const
Definition: store.cc:2083
virtual void append(char const *, int)
Appends a c-string to existing packed data.
Definition: store.cc:841
unsigned char cache_key
Store key.
Definition: forward.h:29
char const * getSerialisedMetaData()
Definition: store.cc:2188
int64_t endOffset() const
Definition: MemObject.cc:229
static DeferredRead::DeferrableRead DeferReader
Definition: Store.h:45
bool hasTransients() const
whether there is a corresponding locked transients table entry
Definition: Store.h:187
void attachToDisk(const sdirno, const sfileno, const swap_status_t)
Definition: store.cc:2020
virtual ~StoreEntry()
Definition: store.cc:344
virtual void buffer()
Definition: store.cc:1653
void lastModified(const time_t when)
Definition: Store.h:157
void expireNow()
Definition: store.cc:808
void Stats(StoreEntry *output)
Definition: store.cc:116
static size_t inUseCount()
Definition: store.cc:175
StoreEntry * storeGetPublicByRequestMethod(HttpRequest *request, const HttpRequestMethod &method, const KeyScope keyScope=ksDefault)
Definition: store.cc:540
void ensureMemObject(const char *storeId, const char *logUri, const HttpRequestMethod &aMethod)
initialize mem_obj (if needed) and set URIs/method (if missing)
Definition: store.cc:1641
Definition: Range.h:18
bool hasDisk(const sdirno dirn=-1, const sfileno filen=-1) const
Definition: store.cc:2009
virtual void flush()
Definition: store.cc:1664
bool swappingOut() const
whether we are in the process of writing this entry to disk
Definition: Store.h:119
std::ostream & operator<<(std::ostream &os, const StoreEntry &e)
Definition: store.cc:2111
sfileno swap_filen
unique ID inside a cache_dir for swapped out entries; -1 for others
Definition: Store.h:210
void delayAwareRead(const Comm::ConnectionPointer &conn, char *buf, int len, AsyncCall::Pointer callback)
Definition: store.cc:201
void storeFsDone(void)
void FREE(void *)
Definition: forward.h:36
int conn
the current server connection FD
Definition: Transport.cc:26
time_t expires
Definition: Store.h:200
void forcePublicKey(const cache_key *newkey)
Definition: store.cc:662
void write(StoreIOBuffer)
Definition: Store.h:332
void memOutDecision(const bool willCacheInRam)
Definition: store.cc:1868
void destroyMemObject()
Definition: store.cc:371
MemCache memCache
current [shared] memory caching state for the entry
Definition: MemObject.h:157
XitTable xitTable
current [shared] memory caching state for the entry
Definition: MemObject.h:144
void doAbandon(const char *context)
Definition: store.cc:477
int32_t index
entry position inside the memory cache
Definition: MemObject.h:152
time_t timestamp
Definition: Store.h:198
void replaceHttpReply(HttpReply *, bool andStartWriting=true)
Definition: store.cc:1800
void storeInit(void)
Definition: store.cc:1337
ping_status_t
Definition: enums.h:39
static void getPublicByRequest(StoreClient *aClient, HttpRequest *request)
Definition: store.cc:510
void storeReplAdd(const char *, REMOVALPOLICYCREATE *)
Definition: store.cc:1719
int32_t index
entry position inside the in-transit table
Definition: MemObject.h:141
bool hasIfMatchEtag(const HttpRequest &request) const
has ETag matching at least one of the If-Match etags
Definition: store.cc:1953
virtual void complete()
Definition: store.cc:1076
void onException() noexcept
Definition: store.cc:2194
bool validLength() const
Definition: store.cc:1284
static void getPublic(StoreClient *aClient, const char *uri, const HttpRequestMethod &method)
Definition: store.cc:522
void invokeHandlers()
virtual char const * getSerialisedMetaData()
Definition: store.cc:1837
StoreEntry * storeGetPublicByRequest(HttpRequest *request, const KeyScope keyScope=ksDefault)
Definition: store.cc:546
void hashDelete()
Definition: store.cc:423
int locked() const
Definition: store.cc:1267
void storeSwapFileNumberSet(StoreEntry *e, sfileno filn)
uint64_t swap_file_sz
Definition: Store.h:204
ESIElement::Pointer cachedESITree
Definition: Store.h:234
HttpReply const * getReply() const
Definition: Store.h:331
ping_status_t ping_status
Definition: Store.h:216
void hashInsert(const cache_key *)
Definition: store.cc:414
bool checkDeferRead(int fd) const
Definition: store.cc:245
store_client_t
Definition: enums.h:63
StoreEntry()
Definition: store.cc:323
const char * describeTimestamps() const
Definition: store.cc:2071
void storeFsInit(void)
Definition: store.cc:1710
void storeConfigure(void)
Definition: store.cc:1351
virtual size_t bytesWanted(Range< size_t > const aRange, bool) const
Definition: Store.h:338
virtual int64_t objectLen() const
Definition: store.cc:1673
void abort()
Definition: store.cc:1125
time_t lastModified() const
Definition: Store.h:159
bool checkCachable()
Definition: store.cc:970
void unlockAndReset(const char *resetContext=nullptr)
Definition: Store.h:388
virtual HttpReply const * getReply() const
Definition: store.cc:1688
mem_status_t mem_status
Definition: Store.h:214
static NullStoreEntry * getInstance()
Definition: store.cc:2170
StoreEntry * storeCreateEntry(const char *, const char *, const RequestFlags &, const HttpRequestMethod &)
Definition: store.cc:794
bool isEmpty() const
Definition: Store.h:334
bool hasMemStore() const
whether there is a corresponding locked shared memory table entry
Definition: Store.h:189
bool modifiedSince(const time_t ims, const int imslen=-1) const
Definition: store.cc:1905
int storeTooManyDiskFilesOpen(void)
Definition: store.cc:929
void storeGetMemSpace(int size)
Definition: store.cc:1179
bool setPublicKey(const KeyScope keyScope=ksDefault)
Definition: store.cc:605
void abandon(const char *context)
Definition: Store.h:264
void dump(int debug_lvl) const
Definition: store.cc:1551
int checkNegativeHit() const
Definition: store.cc:1378
bool hasOneOfEtags(const String &reqETags, const bool allowWeakMatch) const
whether at least one of the request ETags matches entity ETag
Definition: store.cc:1971
Store statistics related to low-level I/O.
Definition: StoreStats.h:58
static NullStoreEntry _instance
Definition: Store.h:351
void releaseRequest(const bool shareable=false)
Definition: store.cc:448
uint16_t flags
Definition: Store.h:206
virtual void vappendf(const char *, va_list)
Definition: store.cc:859
void setNoDelay(bool const)
Definition: store.cc:251
RemovalPolicyNode repl
Definition: Store.h:196
void cacheInMemory()
start or continue storing in memory cache
void trimMemory(const bool)
Definition: Store.h:349
void complete()
Definition: Store.h:341
signed_int32_t sfileno
Definition: forward.h:22
MemObject * mem_obj
Definition: Store.h:195
friend std::ostream & operator<<(std::ostream &os, const StoreEntry &e)
Definition: store.cc:2111
int checkTooSmall()
Definition: store.cc:941
C end
Definition: Range.h:25
int unsigned int const char *desc STUB void int len
Definition: stub_fd.cc:20
const char * url() const
Definition: store.cc:1618
bool mayStartHitting() const
Definition: Store.h:268
uint16_t refcount
Definition: Store.h:205
void STABH(void *)
Definition: MemObject.h:28
void const char * buf
Definition: stub_helper.cc:16
void DeferrableRead(void *context, CommRead const &)
Definition: CommRead.h:35
void lengthWentBad(const char *reason)
flags [truncated or too big] entry with ENTRY_BAD_LENGTH and releases it
Definition: store.cc:1068
void Maintain(void *unused)
Definition: store.cc:1193
const char * getMD5Text() const
Definition: store.cc:2176
void storeFreeMemory(void)
Definition: store.cc:1413
AsyncCall::Pointer deferredProducer
producer callback registered with deferProducer
Definition: Store.h:312
signed int sdirno
Definition: forward.h:23
unsigned short lock_count
Definition: Store.h:301
const cache_key * calcPublicKey(const KeyScope keyScope)
Definition: store.cc:688
bool makePublic(const KeyScope keyScope=ksDefault)
Definition: store.cc:143
virtual const char * getMD5Text() const
Definition: store.cc:183
store_status_t store_status
Definition: Store.h:218
void checkDisk() const
does nothing except throwing if disk-associated data members are inconsistent
Definition: store.cc:2042
void swapOutDecision(const MemObject::SwapOut::Decision &decision)
Definition: store.cc:1874
void swapOutFileClose(int how)
Store::EntryGuard EntryGuard
Definition: Store.h:286
bool cacheNegatively()
Definition: store.cc:164
virtual void write(StoreIOBuffer)
Definition: store.cc:815
Store::Disk & disk() const
the disk this entry is [being] cached on; asserts for entries w/o a disk
Definition: store.cc:2000
bool memoryCachable()
checkCachable() and can be cached in memory
Definition: store.cc:1357
virtual bool mayStartSwapOut()
whether we may start writing to disk (now or in the future)
virtual bool mayStartSwapOut()
whether we may start writing to disk (now or in the future)
Definition: Store.h:347
KeyScope
Definition: store_key_md5.h:18
swap_status_t
StoreEntry relationship with a disk cache.
Definition: enums.h:51
StoreIoStats store_io_stats
Definition: store_io.cc:16
const cache_key * publicKey() const
Definition: Store.h:98
const char * storeEntryFlags(const StoreEntry *)
Definition: stat.cc:280
virtual bool isNull() const
Definition: Store.h:228
StoreEntry * adjustVary()
Definition: store.cc:701
Entry * entry_
the guarded Entry or nil
Definition: Store.h:398
swap_status_t swap_status
Definition: Store.h:220
void storeAppendVPrintf(StoreEntry *, const char *, va_list ap)
Definition: store.cc:903
Decision
Decision states for StoreEntry::swapoutPossible() and related code.
Definition: MemObject.h:122
void registerAbort(STABH *cb, void *)
Definition: store.cc:1532
int expiresMoreThan(time_t, time_t)
Definition: store.cc:1423
virtual size_t bytesWanted(Range< size_t > const aRange, bool ignoreDelayPool=false) const
Definition: store.cc:227
void clearPublicKeyScope()
Definition: store.cc:645
void storeErrorResponse(HttpReply *reply)
Store a prepared error response. MemObject locks the reply object.
Definition: store.cc:1783
bool checkTooBig() const
Definition: store.cc:957
void deferProducer(const AsyncCall::Pointer &producer)
call back producer when more buffer space is available
Definition: store.cc:351
void clearPrivate()
Definition: store.cc:156
time_t lastModified_
received Last-Modified value or -1; use lastModified()
Definition: Store.h:202
bool hasEtag(ETag &etag) const
whether this entry has an ETag; if yes, puts ETag value into parameter
Definition: store.cc:1942
bool hasIfNoneMatchEtag(const HttpRequest &request) const
has ETag matching at least one of the If-None-Match etags
Definition: store.cc:1960
void startWriting()
Definition: store.cc:1816
void unregisterAbort()
Definition: store.cc:1541
time_t lastref
Definition: Store.h:199
enum _mem_status_t mem_status_t
virtual store_client_t storeClientType() const
Definition: store.cc:263
virtual bool isEmpty() const
Definition: Store.h:60
void storeHeapPositionUpdate(StoreEntry *, SwapDir *)
void swapOut()
void reset()
Definition: store.cc:1694
void setPrivateKey(const bool shareable, const bool permanent)
Definition: store.cc:578
void transientsAbandonmentCheck()
Definition: store.cc:1855
bool swappedOut() const
whether the entire entry is now on disk (possibly marked for deletion)
Definition: Store.h:121
void negativeCache()
Definition: store.cc:1399
#define EBIT_TEST(flag, bit)
Definition: defines.h:107
#define NULL
Definition: types.h:166
A StoreEntry::getPublic*() caller.
Definition: StoreClient.h:22
virtual void trimMemory(const bool preserveSwappable)
Definition: store.cc:1883
void kickProducer()
calls back producer registered with deferProducer
Definition: store.cc:361
manages a single cache_dir
Definition: Disk.h:21
void setMemStatus(mem_status_t)
Definition: store.cc:1576
void lock(const char *context)
Definition: store.cc:435
void createMemObject()
Definition: store.cc:1627

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors