]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
SourceLayout: shuffle CommIO into DiskThreads library
authorAmos Jeffries <squid3@treenet.co.nz>
Mon, 6 Feb 2012 01:01:23 +0000 (18:01 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Mon, 6 Feb 2012 01:01:23 +0000 (18:01 -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.

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/tests/stub_CommIO.cc

diff --git a/src/DiskIO/DiskThreads/CommIO.cc b/src/DiskIO/DiskThreads/CommIO.cc
new file mode 100644 (file)
index 0000000..dc2e70f
--- /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 "DiskIO/DiskThreads/CommIO.h"
+#include "fde.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 e90536c2798cabf4428d8fba0f02cc49deeefa33..21470965406a5d5337d61a36d95f8a69fd926f7d 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 \
@@ -522,9 +523,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 \
@@ -835,6 +834,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 = \
@@ -1432,8 +1437,6 @@ tests_testCacheManager_DEPENDENCIES = \
        $(REPL_OBJS) \
        $(SQUID_CPPUNIT_LA)
 
-#      tests/stub_CommIO.cc \
-#      tests/stub_comm.cc
 tests_testDiskIO_SOURCES = \
        CacheDigest.cc \
        cbdata.cc \
@@ -2983,7 +2986,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 aca3385789224cfa250f3e1a86b206d91dd8b1d5..e39f66b1a847aea161b47a23012f67fc0b1e550f 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"
@@ -1819,60 +1818,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 95347359e5f1062d0f2cb1482fd14b455ce0786e..394102f47d2966164fb3de00f8ec2752329fe177 100644 (file)
@@ -1,5 +1,5 @@
-#include "squid-old.h"
-#include "CommIO.h"
+#include "squid.h"
+#include "DiskIO/DiskThreads/CommIO.h"
 
 #define STUB_API "CommIO.cc"
 #include "tests/STUB.h"