]> git.ipfire.org Git - thirdparty/squid.git/blob - src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.cc
Source Format Enforcement (#1234)
[thirdparty/squid.git] / src / DiskIO / DiskDaemon / DiskDaemonDiskIOModule.cc
1 /*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
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.
7 */
8
9 #include "squid.h"
10 #include "DiskDaemonDiskIOModule.h"
11 #include "DiskdIOStrategy.h"
12 #include "DiskIO/DiskDaemon/DiskdAction.h"
13 #include "mgr/Registration.h"
14 #include "Store.h"
15
16 DiskDaemonDiskIOModule::DiskDaemonDiskIOModule() : initialised(false)
17 {
18 ModuleAdd(*this);
19 }
20
21 DiskDaemonDiskIOModule &
22 DiskDaemonDiskIOModule::GetInstance()
23 {
24 return Instance;
25 }
26
27 void
28 DiskDaemonDiskIOModule::init()
29 {
30 /* We may be reused - for instance in coss - eventually.
31 * When we do, we either need per-using-module stats (
32 * no singleton pattern), or we need to refcount the
33 * initialisation level and handle multiple clients.
34 * RBC - 20030718.
35 */
36 assert(!initialised);
37 memset(&diskd_stats, '\0', sizeof(diskd_stats));
38
39 initialised = true;
40
41 registerWithCacheManager();
42 }
43
44 void
45 DiskDaemonDiskIOModule::registerWithCacheManager(void)
46 {
47 Mgr::RegisterAction("diskd", "DISKD Stats", &DiskdAction::Create, 0, 1);
48 }
49
50 void
51 DiskDaemonDiskIOModule::gracefulShutdown()
52 {
53 initialised = false;
54 }
55
56 DiskIOStrategy *
57 DiskDaemonDiskIOModule::createStrategy()
58 {
59 return new DiskdIOStrategy();
60 }
61
62 DiskDaemonDiskIOModule DiskDaemonDiskIOModule::Instance;
63
64 char const *
65 DiskDaemonDiskIOModule::type () const
66 {
67 return "DiskDaemon";
68 }
69