]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/DiskIO/DiskIOModule.cc
2 * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
9 /* DEBUG: section 92 Storage File System */
12 #include "DiskIOModule.h"
14 std::vector
<DiskIOModule
*> *DiskIOModule::_Modules
= NULL
;
16 //DiskIOModule() : initialised (false) {}
18 DiskIOModule::DiskIOModule()
20 /** We cannot call ModuleAdd(*this)
21 * here as the virtual methods are not yet available.
22 * We leave that to PokeAllModules() later.
27 DiskIOModule::SetupAllModules()
29 DiskIOModule::PokeAllModules();
31 for (iterator i
= GetModules().begin(); i
!= GetModules().end(); ++i
)
32 /* Call the FS to set up capabilities and initialize the FS driver */
37 DiskIOModule::ModuleAdd(DiskIOModule
&instance
)
39 iterator i
= GetModules().begin();
41 while (i
!= GetModules().end()) {
42 assert(strcmp((*i
)->type(), instance
.type()) != 0);
46 GetModules().push_back (&instance
);
49 std::vector
<DiskIOModule
*> const &
50 DiskIOModule::Modules()
55 std::vector
<DiskIOModule
*> &
56 DiskIOModule::GetModules()
59 _Modules
= new std::vector
<DiskIOModule
*>;
65 * Called when a graceful shutdown is to occur
69 DiskIOModule::FreeAllModules()
71 while (!GetModules().empty()) {
72 DiskIOModule
*fs
= GetModules().back();
73 GetModules().pop_back();
74 fs
->gracefulShutdown();
79 DiskIOModule::Find(char const *type
)
81 for (iterator i
= GetModules().begin(); i
!= GetModules().end(); ++i
)
82 if (strcasecmp(type
, (*i
)->type()) == 0)
89 DiskIOModule::FindDefault()
91 /** Best IO options are in order: */
92 DiskIOModule
* result
;
93 result
= Find("DiskThreads");
95 result
= Find("DiskDaemon");
99 result
= Find("Blocking");