/*
- * $Id: peer_digest.cc,v 1.25 1998/05/11 18:44:44 rousskov Exp $
+ * $Id: peer_digest.cc,v 1.26 1998/05/12 20:29:24 wessels Exp $
*
* DEBUG: section 72 Peer Digest Routines
* AUTHOR: Alex Rousskov
static time_t peerDigestExpiresDelay(const peer * p, const StoreEntry * e);
static void peerDigestDisable(peer * p);
static void peerDigestDelay(peer * p, int disable, time_t delay);
-static void peerDigestValidate(peer * p);
+static EVH peerDigestValidate;
static void peerDigestRequest(peer * p);
static void peerDigestFetchReply(void *data, char *buf, ssize_t size);
static void peerDigestRequest(peer * p);
disable ? "disabling" : "delaying",
p->host ? p->host : "<null>",
delay, mkrfc1123(squid_curtime + delay));
- eventAdd("peerDigestValidate", (EVH *) peerDigestValidate,
- p, delay);
+ eventAdd("peerDigestValidate", peerDigestValidate, p, delay);
} else {
assert(disable);
debug(72, 2) ("peerDigestDisable: disabling peer %s for good\n",
/* request new digest if our copy is too old; schedule next validation */
static void
-peerDigestValidate(peer * p)
+peerDigestValidate(void * data)
{
+ peer *p = data;
StoreEntry *e = NULL;
int do_request;
time_t req_time = squid_curtime;
static SIH storeClientFileOpened;
static void storeClientCopy2(StoreEntry * e, store_client * sc);
static void storeClientFileRead(store_client * sc);
+static EVH storeClientCopyEvent;
/* check if there is any client waiting for this object at all */
/* return 1 if there is at least one client */
storeClientCopyEvent(void *data)
{
store_client *sc = data;
- int valid = cbdataValid(sc);
debug(20, 3) ("storeClientCopyEvent: Running\n");
- cbdataUnlock(sc);
- if (!valid)
- return;
sc->flags.copy_event_pending = 0;
if (!sc->callback)
return;
return;
if (sc->flags.store_copying) {
sc->flags.copy_event_pending = 1;
- cbdataLock(sc);
debug(20, 3) ("storeClientCopy: Queueing storeClientCopyEvent()\n");
eventAdd("storeClientCopyEvent", storeClientCopyEvent, sc, 0);
return;
/*
- * $Id: store_digest.cc,v 1.14 1998/05/12 20:16:34 wessels Exp $
+ * $Id: store_digest.cc,v 1.15 1998/05/12 20:29:26 wessels Exp $
*
* DEBUG: section 71 Store Digest Manager
* AUTHOR: Alex Rousskov
static void storeDigestRewriteStart();
static void storeDigestRewriteResume();
static void storeDigestRewriteFinish(StoreEntry * e);
-static void storeDigestSwapOutStep(StoreEntry * e);
+static EVH storeDigestSwapOutStep;
static void storeDigestCBlockSwapOut(StoreEntry * e);
static int storeDigestCalcCap();
static int storeDigestResize();
httpReplySwapOut(e->mem_obj->reply, e);
storeDigestCBlockSwapOut(e);
storeBufferFlush(e);
- eventAdd("storeDigestSwapOutStep", (EVH *) storeDigestSwapOutStep, sd_state.rewrite_lock, 0);
+ eventAdd("storeDigestSwapOutStep", storeDigestSwapOutStep, sd_state.rewrite_lock, 0);
}
/* finishes swap out sequence for the digest; schedules next rewrite */
/* swaps out one digest "chunk" per invocation; schedules next swap out */
static void
-storeDigestSwapOutStep(StoreEntry * e)
+storeDigestSwapOutStep(void * data)
{
+ StoreEntry * e = data;
int chunk_size = StoreDigestSwapOutChunkSize;
assert(e);
assert(e == sd_state.rewrite_lock);
if (sd_state.rewrite_offset >= store_digest->mask_size)
storeDigestRewriteFinish(e);
else
- eventAdd("storeDigestSwapOutStep", (EVH *) storeDigestSwapOutStep, e, 0);
+ eventAdd("storeDigestSwapOutStep", storeDigestSwapOutStep, e, 0);
}
static void
assert(e->mem_status == NOT_IN_MEMORY);
assert(e->swap_status == SWAPOUT_WRITING || e->swap_status == SWAPOUT_DONE);
if (fd < 0) {
- debug(20, 0) ("storeSwapInFileOpened: Failed '%s' for '%s'\n",
+ debug(20, 0) ("storeSwapInFileOpened: Failed\n"
+ "\tFile:\t'%s'\n\t URL:\t'%s'\n",
ctrlp->path, storeUrl(e));
+ storeEntryDump(e, 0);
/* Invoke a store abort that should free the memory object */
(ctrlp->callback) (-1, ctrlp->callback_data);
xfree(ctrlp->path);