--- /dev/null
+/*
+ * 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;
+ }
+}
-#ifndef __COMMIO_H__
-#define __COMMIO_H__
+#ifndef SQUID_SRC_DISKIO_DISKTHREADS_COMMIO_H
+#define SQUID_SRC_DISKIO_DISKTHREADS_COMMIO_H
#include "fde.h"
}
};
-#endif
+#endif /* SQUID_SRC_DISKIO_DISKTHREADS_COMMIO_H */
#if HAVE_SCHED_H
#include <sched.h>
#endif
-#include "CommIO.h"
+#include "DiskIO/DiskThreads/CommIO.h"
#include "SquidTime.h"
#include "Store.h"
#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"
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 \
ClientRequestContext.h \
clientStream.cc \
clientStream.h \
- CommIO.h \
CompletionDispatcher.cc \
CompletionDispatcher.h \
CommRead.h \
$(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 \
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 = \
$(REPL_OBJS) \
$(SQUID_CPPUNIT_LA)
-# tests/stub_CommIO.cc \
-# tests/stub_comm.cc
tests_testDiskIO_SOURCES = \
CacheDigest.cc \
cbdata.cc \
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 \
#include "comm/Loops.h"
#include "comm/Write.h"
#include "comm/TcpAcceptor.h"
-#include "CommIO.h"
#include "CommRead.h"
#include "MemBuf.h"
#include "pconn.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;
- }
-}
-
/// 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.
-#include "squid-old.h"
-#include "CommIO.h"
+#include "squid.h"
+#include "DiskIO/DiskThreads/CommIO.h"
#define STUB_API "CommIO.cc"
#include "tests/STUB.h"