]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/DiskIO/DiskIOModule.cc
SourceFormat Enforcement
[thirdparty/squid.git] / src / DiskIO / DiskIOModule.cc
index 71e1c4e3e0bc0b034f7efc90bb8229c8fc631c75..031e3da9115ff7b68b86ae62a42ab8cc39b2ea56 100644 (file)
@@ -1,63 +1,68 @@
-
 /*
- * $Id: DiskIOModule.cc,v 1.3 2006/09/14 00:51:10 robertc Exp $
- *
- * DEBUG: section 92    Storage File System
- * AUTHOR: Robert Collins
- *
- * 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.
+ * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
  *
- *  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>
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
  */
 
+/* DEBUG: section 92    Storage File System */
+
 #include "squid.h"
 #include "DiskIOModule.h"
-
-Vector<DiskIOModule*> *DiskIOModule::_Modules = NULL;
+#if HAVE_DISKIO_MODULE_AIO
+#include "DiskIO/AIO/AIODiskIOModule.h"
+#endif
+#if HAVE_DISKIO_MODULE_BLOCKING
+#include "DiskIO/Blocking/BlockingDiskIOModule.h"
+#endif
+#if HAVE_DISKIO_MODULE_DISKDAEMON
+#include "DiskIO/DiskDaemon/DiskDaemonDiskIOModule.h"
+#endif
+#if HAVE_DISKIO_MODULE_DISKTHREADS
+#include "DiskIO/DiskThreads/DiskThreadsDiskIOModule.h"
+#endif
+#if HAVE_DISKIO_MODULE_IPCIO
+#include "DiskIO/IpcIo/IpcIoDiskIOModule.h"
+#endif
+#if HAVE_DISKIO_MODULE_MMAPPED
+#include "DiskIO/Mmapped/MmappedDiskIOModule.h"
+#endif
+
+std::vector<DiskIOModule*> *DiskIOModule::_Modules = NULL;
 
 //DiskIOModule() : initialised (false) {}
+
 DiskIOModule::DiskIOModule()
 {
-    /* We cannot call
-     * ModuleAdd(*this);
-     * here as the virtual methods are not yet available
+    /** We cannot call ModuleAdd(*this)
+     * here as the virtual methods are not yet available.
+     * We leave that to SetupAllModules() later.
      */
 }
 
-void
-DiskIOModule::RegisterAllModulesWithCacheManager(void)
-{
-    for (iterator i = GetModules().begin(); i != GetModules().end(); ++i)
-        (*i)->registerWithCacheManager();
-}
-
 void
 DiskIOModule::SetupAllModules()
 {
+#if HAVE_DISKIO_MODULE_AIO
+    AIODiskIOModule::GetInstance();
+#endif
+#if HAVE_DISKIO_MODULE_BLOCKING
+    BlockingDiskIOModule::GetInstance();
+#endif
+#if HAVE_DISKIO_MODULE_DISKDAEMON
+    DiskDaemonDiskIOModule::GetInstance();
+#endif
+#if HAVE_DISKIO_MODULE_DISKTHREADS
+    DiskThreadsDiskIOModule::GetInstance();
+#endif
+#if HAVE_DISKIO_MODULE_IPCIO
+    IpcIoDiskIOModule::GetInstance();
+#endif
+#if HAVE_DISKIO_MODULE_MMAPPED
+    MmappedDiskIOModule::GetInstance();
+#endif
+
     for (iterator i = GetModules().begin(); i != GetModules().end(); ++i)
         /* Call the FS to set up capabilities and initialize the FS driver */
         (*i)->init();
@@ -76,32 +81,32 @@ DiskIOModule::ModuleAdd(DiskIOModule &instance)
     GetModules().push_back (&instance);
 }
 
-Vector<DiskIOModule *> const &
+std::vector<DiskIOModule *> const &
 DiskIOModule::Modules()
 {
     return GetModules();
 }
 
-Vector<DiskIOModule*> &
+std::vector<DiskIOModule*> &
 DiskIOModule::GetModules()
 {
     if (!_Modules)
-        _Modules = new Vector<DiskIOModule *>;
+        _Modules = new std::vector<DiskIOModule *>;
 
     return *_Modules;
 }
 
-/*
- * called when a graceful shutdown is to occur
+/**
+ * Called when a graceful shutdown is to occur
  * of each fs module.
  */
 void
 DiskIOModule::FreeAllModules()
 {
-    while (GetModules().size()) {
+    while (!GetModules().empty()) {
         DiskIOModule *fs = GetModules().back();
         GetModules().pop_back();
-        fs->shutdown();
+        fs->gracefulShutdown();
     }
 }
 
@@ -118,7 +123,7 @@ DiskIOModule::Find(char const *type)
 DiskIOModule *
 DiskIOModule::FindDefault()
 {
-    /* Best IO options are in order: */
+    /** Best IO options are in order: */
     DiskIOModule * result;
     result = Find("DiskThreads");
     if (NULL == result)
@@ -130,7 +135,3 @@ DiskIOModule::FindDefault()
     return result;
 }
 
-/* disk modules dont export anything by default */
-void
-DiskIOModule::registerWithCacheManager(void)
-{}