1 /*
2  * Copyright (C) 1996-2021 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 /* DEBUG: section 16    Cache Manager API */
10 
11 #ifndef SQUID_MGR_ACTION_PROFILE_H
12 #define SQUID_MGR_ACTION_PROFILE_H
13 
14 #include "mgr/ActionCreator.h"
15 #include "mgr/forward.h"
16 
17 namespace Mgr
18 {
19 
20 /// hard-coded Cache Manager action configuration, including Action creator
21 class ActionProfile: public RefCountable
22 {
23 public:
24     typedef RefCount<ActionProfile> Pointer;
25 
26 public:
ActionProfile(const char * aName,const char * aDesc,bool aPwReq,bool anAtomic,const ActionCreatorPointer & aCreator)27     ActionProfile(const char* aName, const char* aDesc, bool aPwReq,
28                   bool anAtomic, const ActionCreatorPointer &aCreator):
29         name(aName), desc(aDesc), isPwReq(aPwReq), isAtomic(anAtomic),
30         creator(aCreator) {
31     }
32 
33 public:
34     const char *name; ///< action label to uniquely identify this action
35     const char *desc; ///< action description to build an action menu list
36     bool isPwReq; ///< whether password is required to perform the action
37     bool isAtomic; ///< whether action dumps everything in one dump() call
38     ActionCreatorPointer creator; ///< creates Action objects with this profile
39 };
40 
41 } // namespace Mgr
42 
43 inline std::ostream &
44 operator <<(std::ostream &os, const Mgr::ActionProfile &profile)
45 {
46     return os << profile.name;
47 }
48 
49 #endif /* SQUID_MGR_ACTION_PROFILE_H */
50 
51