]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
SourceLayout: shuffle CommIO into DiskThreads library
authorAmos Jeffries <squid3@treenet.co.nz>
Sat, 25 Feb 2012 04:14:25 +0000 (21:14 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Sat, 25 Feb 2012 04:14:25 +0000 (21:14 -0700)
While investigating the Windows port problems it became clear that the
CommIO object is not actually related to the rest of comm systems. It is
instead a dedicated higher level disk I/O pipe manager for DiskThreads.

Given that it causes build errors in comm.cc on Windows and does not
even need to be there this patch shuffles it into the DiskThreads
library. The build issues on Windows still exist but are now limited to
just that threads library and can be avoided temporarily with simple
./configure options.

doc/debug-sections.txt
src/DiskIO/DiskThreads/CommIO.cc [new file with mode: 0644]
src/DiskIO/DiskThreads/CommIO.h [moved from src/CommIO.h with 81% similarity]
src/DiskIO/DiskThreads/aiops.cc
src/DiskIO/DiskThreads/aiops_win32.cc
src/Makefile.am
src/comm.cc
src/comm/Loops.h
src/tests/stub_CommIO.cc

index e79a1776d7c79c0d838dad0b306ac432fc5375c5..b40764ca3e84bd20f959f3f5d37b4e049263c484 100644 (file)
@@ -17,6 +17,7 @@ section 03    Configuration File Parsing
 section 03    Configuration Settings
 section 04    Error Generation
 section 05    Comm
+section 05    Disk I/O pipe manager
 section 05    Listener Socket Handler
 section 05    Socket Connection Opener
 section 05    Socket Functions
diff --git a/src/DiskIO/DiskThreads/CommIO.cc b/src/DiskIO/DiskThreads/CommIO.cc
new file mode 100644 (file)
index 0000000..3f91d28
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * DEBUG: section 05    Disk I/O pipe manager
+ * AUTHOR: Harvest Derived
+ *
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ *
+ * Copyright (c) 2003, Robert Collins <robertc@squid-cache.org>
+ */
+
+#include "squid.h"
+#include "comm/Loops.h"
+#include "DiskIO/DiskThreads/CommIO.h"
+
+void
+CommIO::Initialise()
+{
+    /* Initialize done pipe signal */
+    int DonePipe[2];
+    if (pipe(DonePipe)) {}
+    DoneFD = DonePipe[1];
+    DoneReadFD = DonePipe[0];
+    fd_open(DoneReadFD, FD_PIPE, "async-io completetion event: main");
+    fd_open(DoneFD, FD_PIPE, "async-io completetion event: threads");
+    commSetNonBlocking(DoneReadFD);
+    commSetNonBlocking(DoneFD);
+    Comm::SetSelect(DoneReadFD, COMM_SELECT_READ, NULLFDHandler, NULL, 0);
+    Initialised = true;
+}
+
+void
+CommIO::NotifyIOClose()
+{
+    /* Close done pipe signal */
+    FlushPipe();
+    close(DoneFD);
+    close(DoneReadFD);
+    fd_close(DoneFD);
+    fd_close(DoneReadFD);
+    Initialised = false;
+}
+
+bool CommIO::Initialised = false;
+bool CommIO::DoneSignalled = false;
+int CommIO::DoneFD = -1;
+int CommIO::DoneReadFD = -1;
+
+void
+CommIO::FlushPipe()
+{
+    char buf[256];
+    FD_READ_METHOD(DoneReadFD, buf, sizeof(buf));
+}
+
+void
+CommIO::NULLFDHandler(int fd, void *data)
+{
+    FlushPipe();
+    Comm::SetSelect(fd, COMM_SELECT_READ, NULLFDHandler, NULL, 0);
+}
+
+void
+CommIO::ResetNotifications()
+{
+    if (DoneSignalled) {
+        FlushPipe();
+        DoneSignalled = false;
+    }
+}
similarity index 81%
rename from src/CommIO.h
rename to src/DiskIO/DiskThreads/CommIO.h
index 4577ab1eea87a49fd3090ea9e7b8c1a6fb569401..cd351b510e1f11bb2ddcb558c35e82660d35b996 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef __COMMIO_H__
-#define __COMMIO_H__
+#ifndef SQUID_SRC_DISKIO_DISKTHREADS_COMMIO_H
+#define SQUID_SRC_DISKIO_DISKTHREADS_COMMIO_H
 
 #include "fde.h"
 
@@ -35,4 +35,4 @@ CommIO::NotifyIOCompleted()
     }
 };
 
-#endif
+#endif /* SQUID_SRC_DISKIO_DISKTHREADS_COMMIO_H */
index 1cf652c03f7e6213242c2283d6d013f5eb7a524c..b65c7ba35d876dcac6b84ef27d3c22467105729f 100644 (file)
@@ -49,7 +49,7 @@
 #if HAVE_SCHED_H
 #include       <sched.h>
 #endif
-#include "CommIO.h"
+#include "DiskIO/DiskThreads/CommIO.h"
 #include "SquidTime.h"
 #include "Store.h"
 
index 5afce973a41223d6aa2f8986054d5a101c8413d2..60c007659bcea1ec4fbf9dcd7a97bce00fdc63eb 100644 (file)
@@ -36,7 +36,7 @@
 
 #include "squid-old.h"
 #include "squid_windows.h"
-#include "CommIO.h"
+#include "DiskIO/DiskThreads/CommIO.h"
 #include "DiskThreads.h"
 #include "SquidTime.h"
 #include "Store.h"
index 0124f90d0edde407677c871b0f0b81ab26de53ad..f4bb1e239891a068657f5772487872f887a8c9fd 100644 (file)
@@ -173,7 +173,9 @@ endif
 if USE_AIOPS_WIN32
 AIOPS_SOURCE = DiskIO/DiskThreads/aiops_win32.cc
 else
-AIOPS_SOURCE = DiskIO/DiskThreads/aiops.cc
+AIOPS_SOURCE = DiskIO/DiskThreads/aiops.cc \
+       DiskIO/DiskThreads/CommIO.cc \
+       DiskIO/DiskThreads/CommIO.h
 endif
 
 EXTRA_LIBRARIES = libAIO.a libBlocking.a libDiskDaemon.a libDiskThreads.a \
@@ -284,7 +286,6 @@ squid_SOURCES = \
        ClientRequestContext.h \
        clientStream.cc \
        clientStream.h \
-       CommIO.h \
        CompletionDispatcher.cc \
        CompletionDispatcher.h \
        CommRead.h \
@@ -518,9 +519,7 @@ EXTRA_squid_SOURCES = \
        $(SNMP_ALL_SOURCE) \
        $(UNLINKDSOURCE) \
        $(WIN32_ALL_SOURCE) \
-       $(LOADABLE_MODULES_SOURCES) \
-       DiskIO/DiskThreads/aiops.cc \
-       DiskIO/DiskThreads/aiops_win32.cc
+       $(LOADABLE_MODULES_SOURCES)
 
 noinst_HEADERS = \
        client_side_request.cci \
@@ -831,6 +830,12 @@ libDiskThreads_a_SOURCES = \
                DiskIO/DiskThreads/DiskThreadsIOStrategy.cc \
                DiskIO/DiskThreads/DiskThreadsIOStrategy.h
 
+EXTRA_libDiskThreads_a_SOURCES = \
+       DiskIO/DiskThreads/aiops.cc \
+       DiskIO/DiskThreads/aiops_win32.cc \
+       DiskIO/DiskThreads/CommIO.cc \
+       DiskIO/DiskThreads/CommIO.h
+
 DiskIO_DiskDaemon_diskd_SOURCES = DiskIO/DiskDaemon/diskd.cc
 nodist_DiskIO_DiskDaemon_diskd_SOURCES = time.cc
 DiskIO_DiskDaemon_diskd_LDADD = \
@@ -1438,8 +1443,6 @@ tests_testCacheManager_DEPENDENCIES = \
        $(REPL_OBJS) \
        $(SQUID_CPPUNIT_LA)
 
-#      tests/stub_CommIO.cc \
-#      tests/stub_comm.cc
 tests_testDiskIO_SOURCES = \
        CacheDigest.cc \
        cbdata.cc \
@@ -2963,7 +2966,6 @@ tests_testNull_SOURCES = \
        tests/testMain.cc \
        tests/testNull.h \
        tests/stub_internal.cc \
-       tests/stub_CommIO.cc \
        tests/stub_store_rebuild.cc \
        tests/stub_store_stats.cc \
        fd.cc \
index 3a90a04ea683ec8088b9ba464746284b11e12c9c..0fde2694bbde305051c3792220306fd514f64edb 100644 (file)
@@ -45,7 +45,6 @@
 #include "comm/Loops.h"
 #include "comm/Write.h"
 #include "comm/TcpAcceptor.h"
-#include "CommIO.h"
 #include "CommRead.h"
 #include "MemBuf.h"
 #include "pconn.h"
@@ -1818,60 +1817,6 @@ checkTimeouts(void)
     }
 }
 
-void CommIO::Initialise()
-{
-    /* Initialize done pipe signal */
-    int DonePipe[2];
-    if (pipe(DonePipe)) {}
-    DoneFD = DonePipe[1];
-    DoneReadFD = DonePipe[0];
-    fd_open(DoneReadFD, FD_PIPE, "async-io completetion event: main");
-    fd_open(DoneFD, FD_PIPE, "async-io completetion event: threads");
-    commSetNonBlocking(DoneReadFD);
-    commSetNonBlocking(DoneFD);
-    Comm::SetSelect(DoneReadFD, COMM_SELECT_READ, NULLFDHandler, NULL, 0);
-    Initialised = true;
-}
-
-void CommIO::NotifyIOClose()
-{
-    /* Close done pipe signal */
-    FlushPipe();
-    close(DoneFD);
-    close(DoneReadFD);
-    fd_close(DoneFD);
-    fd_close(DoneReadFD);
-    Initialised = false;
-}
-
-bool CommIO::Initialised = false;
-bool CommIO::DoneSignalled = false;
-int CommIO::DoneFD = -1;
-int CommIO::DoneReadFD = -1;
-
-void
-CommIO::FlushPipe()
-{
-    char buf[256];
-    FD_READ_METHOD(DoneReadFD, buf, sizeof(buf));
-}
-
-void
-CommIO::NULLFDHandler(int fd, void *data)
-{
-    FlushPipe();
-    Comm::SetSelect(fd, COMM_SELECT_READ, NULLFDHandler, NULL, 0);
-}
-
-void
-CommIO::ResetNotifications()
-{
-    if (DoneSignalled) {
-        FlushPipe();
-        DoneSignalled = false;
-    }
-}
-
 /// Start waiting for a possibly half-closed connection to close
 // by scheduling a read callback to a monitoring handler that
 // will close the connection on read errors.
index 915abba73b11d9c272cde968d701104fed39e4fd..d3f7b4faf54e9cc802315c0ae060b1374345028b 100644 (file)
@@ -3,6 +3,9 @@
 
 #include "comm_err_t.h"
 
+// for PF
+#include "typedefs.h"
+
 /* Comm layer select loops API.
  *
  * These API functions must be implemented by all FD IO loops used by Squid.
index 863c1ba1131ae3b337ef0c49ce8eb065cda30818..ca92c49728fed4a06ad718282de9b541a688b0b1 100644 (file)
@@ -1,5 +1,5 @@
-#include "squid-old.h"
-#include "CommIO.h"
+#include "squid.h"
+#include "DiskIO/DiskThreads/CommIO.h"
 
 bool CommIO::Initialised = false;
 bool CommIO::DoneSignalled = false;