]> git.ipfire.org Git - thirdparty/squid.git/blob - src/fs/ufs/StoreFSufs.h
Cleanup: zap CVS Id tags
[thirdparty/squid.git] / src / fs / ufs / StoreFSufs.h
1 /*
2 * $Id$
3 *
4 * SQUID Web Proxy Cache http://www.squid-cache.org/
5 * ----------------------------------------------------------
6 *
7 * Squid is the result of efforts by numerous individuals from
8 * the Internet community; see the CONTRIBUTORS file for full
9 * details. Many organizations have provided support for Squid's
10 * development; see the SPONSORS file for full details. Squid is
11 * Copyrighted (C) 2001 by the Regents of the University of
12 * California; see the COPYRIGHT file for full details. Squid
13 * incorporates software developed and/or copyrighted by other
14 * sources; see the CREDITS file for full details.
15 *
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2 of the License, or
19 * (at your option) any later version.
20 *
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU General Public License
27 * along with this program; if not, write to the Free Software
28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
29 *
30 * Copyright (c) 2003, Robert Collins <robertc@squid-cache.org>
31 */
32 #ifndef SQUID_STOREFSUFS_H
33 #define SQUID_STOREFSUFS_H
34
35 /**
36 \defgroup UFS UFS Storage Filesystem
37 \ingroup FileSystems
38 */
39
40 class DiskIOModule;
41
42 #include "StoreFileSystem.h"
43
44 /**
45 \ingroup UFS, FileSystems
46 *
47 * Core UFS class. This template provides compile time aliases for
48 * ufs/aufs/diskd to ease configuration conversion - each becomes a
49 * StoreFS module whose createSwapDir method parameterises the common
50 * UFSSwapDir with an IO module instance.
51 */
52 template <class TheSwapDir>
53 class StoreFSufs : public StoreFileSystem
54 {
55
56 public:
57 static StoreFileSystem &GetInstance();
58 StoreFSufs(char const *DefaultModuleType, char const *label);
59 virtual ~StoreFSufs() {}
60
61 virtual char const *type() const;
62 virtual SwapDir *createSwapDir();
63 virtual void done();
64 virtual void setup();
65 /** Not implemented */
66 StoreFSufs (StoreFSufs const &);
67 StoreFSufs &operator=(StoreFSufs const &);
68
69 protected:
70 DiskIOModule *IO;
71 char const *moduleName;
72 char const *label;
73 };
74
75 template <class C>
76 StoreFSufs<C>::StoreFSufs(char const *defaultModuleName, char const *aLabel) : IO(NULL), moduleName(defaultModuleName), label(aLabel)
77 {
78 FsAdd(*this);
79 }
80
81 template <class C>
82 char const *
83 StoreFSufs<C>::type() const
84 {
85 return label;
86 }
87
88 template <class C>
89 SwapDir *
90 StoreFSufs<C>::createSwapDir()
91 {
92 C *result = new C(type(), moduleName);
93 return result;
94 }
95
96 template <class C>
97 void
98 StoreFSufs<C>::done()
99 {
100 initialised = false;
101 }
102
103 template <class C>
104 void
105 StoreFSufs<C>::setup()
106 {
107 assert(!initialised);
108 initialised = true;
109 }
110
111 #endif /* SQUID_STOREFSUFS_H */