From: rousskov <> Date: Wed, 13 Feb 2008 06:33:48 +0000 (+0000) Subject: Merging async-call branch changes to HEAD: X-Git-Tag: BASIC_TPROXY4~102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65517dc846f8d089fa77a0f97a88ae7937b75b31;p=thirdparty%2Fsquid.git Merging async-call branch changes to HEAD: Synced after changing delayed read callback storage model from (function pointer, opaque parameter) pair to AsyncCall. Internally, comm module uses AsyncCalls to store callback information now. --- diff --git a/src/Store.h b/src/Store.h index e159d940b5..ab672be0f7 100644 --- a/src/Store.h +++ b/src/Store.h @@ -1,6 +1,6 @@ /* - * $Id: Store.h,v 1.42 2008/01/20 08:54:28 amosjeffries Exp $ + * $Id: Store.h,v 1.43 2008/02/12 23:33:48 rousskov Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -49,6 +49,8 @@ #include "ESIElement.h" #endif +class AsyncCall; + class StoreClient; class MemObject; @@ -113,7 +115,7 @@ public: void destroyMemObject(); int checkTooSmall(); - void delayAwareRead(int fd, char *buf, int len, IOCB *handler, void *data); + void delayAwareRead(int fd, char *buf, int len, AsyncCall::Pointer callback); void setNoDelay (bool const); bool modifiedSince(HttpRequest * request) const; diff --git a/src/gopher.cc b/src/gopher.cc index e0c7a95558..18144f71c8 100644 --- a/src/gopher.cc +++ b/src/gopher.cc @@ -1,6 +1,6 @@ /* - * $Id: gopher.cc,v 1.209 2007/05/29 13:31:40 amosjeffries Exp $ + * $Id: gopher.cc,v 1.210 2008/02/12 23:33:48 rousskov Exp $ * * DEBUG: section 10 Gopher * AUTHOR: Harvest Derived @@ -815,7 +815,7 @@ gopherReadReply(int fd, char *buf, size_t len, comm_err_t flag, int xerrno, void if (do_next_read) comm_read(fd, buf, read_sz, gopherReadReply, gopherState); - + return; } @@ -884,7 +884,9 @@ gopherSendComplete(int fd, char *buf, size_t size, comm_err_t errflag, int xerrn } /* Schedule read reply. */ - entry->delayAwareRead(fd, gopherState->replybuf, BUFSIZ, gopherReadReply, gopherState); + AsyncCall::Pointer call = commCbCall(10,5, "gopherReadReply", + CommIoCbPtrFun(gopherReadReply, gopherState)); + entry->delayAwareRead(fd, gopherState->replybuf, BUFSIZ, call); if (buf) memFree(buf, MEM_4K_BUF); /* Allocated by gopherSendRequest. */ diff --git a/src/store.cc b/src/store.cc index d7fa8c0cce..634966da48 100644 --- a/src/store.cc +++ b/src/store.cc @@ -1,6 +1,6 @@ /* - * $Id: store.cc,v 1.619 2008/01/20 08:54:28 amosjeffries Exp $ + * $Id: store.cc,v 1.620 2008/02/12 23:33:48 rousskov Exp $ * * DEBUG: section 20 Storage Manager * AUTHOR: Harvest Derived @@ -224,16 +224,15 @@ StoreEntry::DeferReader(void *theContext, CommRead const &aRead) anEntry->delayAwareRead(aRead.fd, aRead.buf, aRead.len, - aRead.callback.handler, - aRead.callback.data); + aRead.callback); } void -StoreEntry::delayAwareRead(int fd, char *buf, int len, IOCB *handler, void *data) +StoreEntry::delayAwareRead(int fd, char *buf, int len, AsyncCall::Pointer callback) { size_t amountToRead = bytesWanted(Range(0, len)); /* sketch: readdeferer* = getdeferer. - * ->deferRead (fd, buf, len, handler, data, DelayAwareRead, this) + * ->deferRead (fd, buf, len, callback, DelayAwareRead, this) */ if (amountToRead == 0) { @@ -244,14 +243,14 @@ StoreEntry::delayAwareRead(int fd, char *buf, int len, IOCB *handler, void *data if (!mem_obj->readAheadPolicyCanRead()) { #endif - mem_obj->delayRead(DeferredRead(DeferReader, this, CommRead(fd, buf, len, handler, data))); + mem_obj->delayRead(DeferredRead(DeferReader, this, CommRead(fd, buf, len, callback))); return; #if DELAY_POOLS } /* delay id limit */ - mem_obj->mostBytesAllowed().delayRead(DeferredRead(DeferReader, this, CommRead(fd, buf, len, handler, data))); + mem_obj->mostBytesAllowed().delayRead(DeferredRead(DeferReader, this, CommRead(fd, buf, len, callback))); return; @@ -259,7 +258,7 @@ StoreEntry::delayAwareRead(int fd, char *buf, int len, IOCB *handler, void *data } - comm_read(fd, buf, amountToRead, handler, data); + comm_read(fd, buf, amountToRead, callback); } size_t