/*
- * $Id: Store.h,v 1.22 2006/05/19 17:19:09 wessels Exp $
+ * $Id: Store.h,v 1.23 2006/05/19 20:22:56 wessels Exp $
*
*
* SQUID Web Proxy Cache http://www.squid-cache.org/
virtual void lock()
;
+ virtual void release();
private:
static MemImplementingAllocator *pool;
SQUIDCEXTERN void storeInit(void);
SQUIDCEXTERN void storeAbort(StoreEntry *);
SQUIDCEXTERN void storeAppend(StoreEntry *, const char *, int);
-SQUIDCEXTERN void storeRelease(StoreEntry *);
SQUIDCEXTERN void storeExpireNow(StoreEntry *);
SQUIDCEXTERN void storeReleaseRequest(StoreEntry *);
SQUIDCEXTERN void storeConfigure(void);
/*
- * $Id: client_side_reply.cc,v 1.107 2006/05/19 17:19:09 wessels Exp $
+ * $Id: client_side_reply.cc,v 1.108 2006/05/19 20:22:56 wessels Exp $
*
* DEBUG: section 88 Client-side Reply Routines
* AUTHOR: Robert Collins (Originally Duane Wessels in client_side.c)
if (!newEntry->isNull()) {
/* Release the cached URI */
debug(88, 4) ("clientPurgeRequest: GET '%s'\n", storeUrl(newEntry));
- storeRelease(newEntry);
+ newEntry->release();
purgeStatus = HTTP_OK;
}
{
if (newEntry && !newEntry->isNull()) {
debug(88, 4) ("clientPurgeRequest: HEAD '%s'\n", storeUrl(newEntry));
- storeRelease(newEntry);
+ newEntry->release();
purgeStatus = HTTP_OK;
}
if (entry) {
debug(88, 4) ("clientPurgeRequest: Vary GET '%s'\n",
storeUrl(entry));
- storeRelease(entry);
+ entry->release();
purgeStatus = HTTP_OK;
}
if (entry) {
debug(88, 4) ("clientPurgeRequest: Vary HEAD '%s'\n",
storeUrl(entry));
- storeRelease(entry);
+ entry->release();
purgeStatus = HTTP_OK;
}
}
/*
- * $Id: store_dir_coss.cc,v 1.61 2005/07/03 20:41:46 serassio Exp $
+ * $Id: store_dir_coss.cc,v 1.62 2006/05/19 20:22:56 wessels Exp $
* vim: set et :
*
* DEBUG: section 47 Store COSS Directory Routines
e->swap_filen = -1;
}
- storeRelease(e);
+ e->release();
/* Fake an unlink here, this is a bad hack :( */
storeCossRemove(rb->sd, e);
rb->counts.objcount--;
/*
- * $Id: store_io_coss.cc,v 1.26 2004/12/20 16:30:43 robertc Exp $
+ * $Id: store_io_coss.cc,v 1.27 2006/05/19 20:22:56 wessels Exp $
*
* DEBUG: section 79 Storage Manager COSS Interface
* AUTHOR: Eric Stern
*collision = 1; /* Mark an object alloc collision */
if ((o >= (off_t)newmb->diskstart) && (o < (off_t)newmb->diskend)) {
- storeRelease(e);
+ e->release();
numreleased++;
} else
break;
/*
- * $Id: store_dir_ufs.cc,v 1.72 2006/05/08 23:38:35 robertc Exp $
+ * $Id: store_dir_ufs.cc,v 1.73 2006/05/19 20:22:57 wessels Exp $
*
* DEBUG: section 47 Store Directory Routines
* AUTHOR: Duane Wessels
removed++;
- storeRelease(e);
+ e->release();
}
walker->Done(walker);
/*
- * $Id: ufscommon.cc,v 1.4 2005/01/06 13:16:39 serassio Exp $
+ * $Id: ufscommon.cc,v 1.5 2006/05/19 20:22:57 wessels Exp $
* vim: set et :
*
* DEBUG: section 47 Store Directory Routines
} else if (NULL != e) {
/* URL already exists, this swapfile not being used */
/* junk old, load new */
- storeRelease(e); /* release old entry */
+ e->release(); /* release old entry */
counts.dupcount++;
}
currentEntry()->swap_dirn = -1;
}
- storeRelease(currentEntry());
+ currentEntry()->release();
counts.objcount--;
counts.cancelcount++;
}
currentEntry()->swap_dirn = -1;
}
- storeRelease(currentEntry());
+ currentEntry()->release();
counts.dupcount++;
} else {
/* URL doesnt exist, swapfile not in use */
/*
- * $Id: ftp.cc,v 1.397 2006/05/16 16:05:08 hno Exp $
+ * $Id: ftp.cc,v 1.398 2006/05/19 20:22:56 wessels Exp $
*
* DEBUG: section 9 File Transfer Protocol (FTP)
* AUTHOR: Harvest Derived
/*
* Authenticated requests can't be cached.
*/
- storeRelease(e);
+ e->release();
} else if (EBIT_TEST(e->flags, ENTRY_CACHABLE) && !restarted_offset) {
storeSetPublicKey(e);
} else {
- storeRelease(e);
+ e->release();
}
}
/*
- * $Id: http.cc,v 1.497 2006/05/08 23:38:33 robertc Exp $
+ * $Id: http.cc,v 1.498 2006/05/19 20:22:56 wessels Exp $
*
* DEBUG: section 11 Hypertext Transfer Protocol (HTTP)
* AUTHOR: Harvest Derived
if (pe != NULL) {
assert(e != pe);
- storeRelease(pe);
+ pe->release();
}
/*
if (pe != NULL) {
assert(e != pe);
- storeRelease(pe);
+ pe->release();
}
if (forbidden)
if (pe != NULL) {
assert(e != pe);
- storeRelease(pe);
+ pe->release();
}
break;
/*
- * $Id: store.cc,v 1.591 2006/05/19 17:19:10 wessels Exp $
+ * $Id: store.cc,v 1.592 2006/05/19 20:22:56 wessels Exp $
*
* DEBUG: section 20 Storage Manager
* AUTHOR: Harvest Derived
destroy_MemObject(e);
if (e->swap_status != SWAPOUT_DONE)
- storeRelease(e);
+ e->release();
}
/* RBC 20050104 this is wrong- memory ref counting
assert(storePendingNClients(this) == 0);
if (EBIT_TEST(flags, RELEASE_REQUEST))
- storeRelease(this);
+ this->release();
else if (storeKeepInMemory(this)) {
Store::Root().dereference(*this);
storeSetMemStatus(this, IN_MEMORY);
pe = storeGetPublic(mem->url, mem->method);
if (pe)
- storeRelease(pe);
+ pe->release();
}
/* Make sure the request knows the variance status */
if ((e2 = (StoreEntry *) hash_lookup(store_table, newkey))) {
debug(20, 3) ("storeSetPublicKey: Making old '%s' private.\n", mem->url);
storeSetPrivateKey(e2);
- storeRelease(e2);
+ e2->release();
if (mem->request)
newkey = storeKeyPublicByRequest(mem->request);
PROF_stop(storeMaintainSwapSpace);
}
-
/* release an object from a cache */
void
-storeRelease(StoreEntry * e)
+StoreEntry::release()
{
PROF_start(storeRelease);
- debug(20, 3) ("storeRelease: Releasing: '%s'\n", e->getMD5Text());
+ debug(20, 3) ("storeRelease: Releasing: '%s'\n", getMD5Text());
/* If, for any reason we can't discard this object because of an
* outstanding request, mark it for pending release */
- if (storeEntryLocked(e)) {
- storeExpireNow(e);
+ if (storeEntryLocked(this)) {
+ storeExpireNow(this);
debug(20, 3) ("storeRelease: Only setting RELEASE_REQUEST bit\n");
- storeReleaseRequest(e);
+ storeReleaseRequest(this);
PROF_stop(storeRelease);
return;
}
- if (store_dirs_rebuilding && e->swap_filen > -1) {
- storeSetPrivateKey(e);
+ if (store_dirs_rebuilding && swap_filen > -1) {
+ storeSetPrivateKey(this);
- if (e->mem_obj)
- destroy_MemObject(e);
+ if (mem_obj)
+ destroy_MemObject(this);
- if (e->swap_filen > -1) {
+ if (swap_filen > -1) {
/*
* Fake a call to StoreEntry->lock() When rebuilding is done,
* we'll just call StoreEntry->unlock() on these.
*/
- e->lock_count++;
- e->setReleaseFlag();
- LateReleaseStack.push_back(e);
+ lock_count++;
+ setReleaseFlag();
+ LateReleaseStack.push_back(this);
PROF_stop(storeRelease);
return;
} else {
- destroyStoreEntry(static_cast<hash_link *>(e));
+ destroyStoreEntry(static_cast<hash_link *>(this));
}
}
- storeLog(STORE_LOG_RELEASE, e);
+ storeLog(STORE_LOG_RELEASE, this);
- if (e->swap_filen > -1) {
- e->unlink();
+ if (swap_filen > -1) {
+ unlink();
- if (e->swap_status == SWAPOUT_DONE)
- if (EBIT_TEST(e->flags, ENTRY_VALIDATED))
- e->store()->updateSize(e->swap_file_sz, -1);
+ if (swap_status == SWAPOUT_DONE)
+ if (EBIT_TEST(flags, ENTRY_VALIDATED))
+ store()->updateSize(swap_file_sz, -1);
- if (!EBIT_TEST(e->flags, KEY_PRIVATE))
- storeDirSwapLog(e, SWAP_LOG_DEL);
+ if (!EBIT_TEST(flags, KEY_PRIVATE))
+ storeDirSwapLog(this, SWAP_LOG_DEL);
#if 0
/* From 2.4. I think we do this in storeUnlink? */
- storeSwapFileNumberSet(e, -1);
+ storeSwapFileNumberSet(this, -1);
#endif
}
- storeSetMemStatus(e, NOT_IN_MEMORY);
- destroyStoreEntry(static_cast<hash_link *>(e));
+ storeSetMemStatus(this, NOT_IN_MEMORY);
+ destroyStoreEntry(static_cast<hash_link *>(this));
PROF_stop(storeRelease);
}
/*
- * $Id: store_rebuild.cc,v 1.83 2006/05/08 23:38:33 robertc Exp $
+ * $Id: store_rebuild.cc,v 1.84 2006/05/19 20:22:56 wessels Exp $
*
* DEBUG: section 20 Store Rebuild Routines
* AUTHOR: Duane Wessels
continue;
/*
- * Calling storeRelease() has no effect because we're
+ * Calling StoreEntry->release() has no effect because we're
* still in 'store_rebuilding' state
*/
if (e->swap_filen < 0)