2 * Copyright (C) 1996-2022 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 #ifndef SQUID_DISKIOMODULE_H
10 #define SQUID_DISKIOMODULE_H
24 /** Poke all compiled modules for self-setup */
25 static void SetupAllModules();
26 static void ModuleAdd(DiskIOModule
&);
27 static void FreeAllModules();
29 static DiskIOModule
*Find(char const *type
);
31 /** Find *any* usable disk module. This will look for the 'best'
32 * available module for this system.
34 static DiskIOModule
*FindDefault();
35 static std::vector
<DiskIOModule
*> const &Modules();
36 typedef std::vector
<DiskIOModule
*>::iterator iterator
;
37 typedef std::vector
<DiskIOModule
*>::const_iterator const_iterator
;
39 virtual ~DiskIOModule() {}
41 virtual void init() = 0;
42 //virtual void registerWithCacheManager(void);
43 virtual void gracefulShutdown() = 0;
44 virtual DiskIOStrategy
*createStrategy() = 0;
46 virtual char const *type () const = 0;
48 DiskIOModule(DiskIOModule
const &);
49 DiskIOModule
&operator=(DiskIOModule
const&);
53 static void RegisterAllModulesWithCacheManager(void);
56 static std::vector
<DiskIOModule
*> &GetModules();
57 static std::vector
<DiskIOModule
*> *_Modules
;
60 #endif /* SQUID_DISKIOMODULE_H */