2 * Copyright (C) 1996-2014 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 static void SetupAllModules();
25 static void ModuleAdd(DiskIOModule
&);
26 static void FreeAllModules();
28 /** Poke all compiled modules for self-setup */
29 static void PokeAllModules();
31 static DiskIOModule
*Find(char const *type
);
33 /** Find *any* usable disk module. This will look for the 'best'
34 * available module for this system.
36 static DiskIOModule
*FindDefault();
37 static std::vector
<DiskIOModule
*> const &Modules();
38 typedef std::vector
<DiskIOModule
*>::iterator iterator
;
39 typedef std::vector
<DiskIOModule
*>::const_iterator const_iterator
;
41 virtual ~DiskIOModule() {}
43 virtual void init() = 0;
44 //virtual void registerWithCacheManager(void);
45 virtual void gracefulShutdown() = 0;
46 virtual DiskIOStrategy
*createStrategy() = 0;
48 virtual char const *type () const = 0;
50 DiskIOModule(DiskIOModule
const &);
51 DiskIOModule
&operator=(DiskIOModule
const&);
55 static void RegisterAllModulesWithCacheManager(void);
58 static std::vector
<DiskIOModule
*> &GetModules();
59 static std::vector
<DiskIOModule
*> *_Modules
;
62 #endif /* SQUID_DISKIOMODULE_H */