]> git.ipfire.org Git - thirdparty/squid.git/blob - src/mgr/IoAction.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / mgr / IoAction.h
1 /*
2 * Copyright (C) 1996-2016 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_IO_ACTION_H
12 #define SQUID_MGR_IO_ACTION_H
13
14 #include "IoStats.h"
15 #include "mgr/Action.h"
16
17 namespace Mgr
18 {
19
20 /// store size histograms of network read() from peer server
21 class IoActionData
22 {
23 public:
24 IoActionData();
25 IoActionData& operator += (const IoActionData& stats);
26
27 public:
28 double http_reads;
29 double ftp_reads;
30 double gopher_reads;
31 double http_read_hist[IoStats::histSize];
32 double ftp_read_hist[IoStats::histSize];
33 double gopher_read_hist[IoStats::histSize];
34 };
35
36 /// implement aggregated 'io' action
37 class IoAction: public Action
38 {
39 protected:
40 IoAction(const CommandPointer &cmd);
41
42 public:
43 static Pointer Create(const CommandPointer &cmd);
44 /* Action API */
45 virtual void add(const Action& action);
46 virtual void pack(Ipc::TypedMsgHdr& msg) const;
47 virtual void unpack(const Ipc::TypedMsgHdr& msg);
48
49 protected:
50 /* Action API */
51 virtual void collect();
52 virtual void dump(StoreEntry* entry);
53
54 private:
55 IoActionData data;
56 };
57
58 } // namespace Mgr
59
60 #endif /* SQUID_MGR_IO_ACTION_H */
61