]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Merging async-call branch changes to HEAD:
authorrousskov <>
Wed, 13 Feb 2008 06:33:48 +0000 (06:33 +0000)
committerrousskov <>
Wed, 13 Feb 2008 06:33:48 +0000 (06:33 +0000)
        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.

src/Store.h
src/gopher.cc
src/store.cc

index e159d940b53373992a4dbdeaed3b7d922827f484..ab672be0f789525c2b1b47bc29330dade7f5e9b7 100644 (file)
@@ -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;
index e0c7a9555819cc5b9852b3e01fcbef57de4beda3..18144f71c883c02bb17558d3901629f3933e8d1e 100644 (file)
@@ -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. */
index d7fa8c0cceb9a6cf561efbd81a8f51fa9d9aebeb..634966da48964482e5315001569250f70eb414d3 100644 (file)
@@ -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<size_t>(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