]> git.ipfire.org Git - thirdparty/squid.git/blame - src/mgr/CountersAction.cc
Source Format Enforcement (#763)
[thirdparty/squid.git] / src / mgr / CountersAction.cc
CommitLineData
8822ebee 1/*
f70aedc4 2 * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
8822ebee 3 *
bbc27441
AJ
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.
8822ebee
AR
7 */
8
bbc27441
AJ
9/* DEBUG: section 16 Cache Manager API */
10
f7f3304a 11#include "squid.h"
8822ebee
AR
12#include "base/TextException.h"
13#include "ipc/Messages.h"
14#include "ipc/TypedMsgHdr.h"
15#include "mgr/CountersAction.h"
16#include "SquidTime.h"
17#include "Store.h"
5bed43d6 18#include "tools.h"
8822ebee 19
82afb125
FC
20void GetCountersStats(Mgr::CountersActionData& stats);
21void DumpCountersStats(Mgr::CountersActionData& stats, StoreEntry* sentry);
8822ebee
AR
22
23Mgr::CountersActionData::CountersActionData()
24{
e297be13 25 memset(this, 0, sizeof(*this));
8822ebee
AR
26}
27
28Mgr::CountersActionData&
29Mgr::CountersActionData::operator += (const CountersActionData& stats)
30{
31 if (timercmp(&sample_time, &stats.sample_time, <))
32 sample_time = stats.sample_time;
33 client_http_requests += stats.client_http_requests;
34 client_http_hits += stats.client_http_hits;
35 client_http_errors += stats.client_http_errors;
36 client_http_kbytes_in += stats.client_http_kbytes_in;
37 client_http_kbytes_out += stats.client_http_kbytes_out;
38 client_http_hit_kbytes_out += stats.client_http_hit_kbytes_out;
39 server_all_requests += stats.server_all_requests;
40 server_all_errors += stats.server_all_errors;
41 server_all_kbytes_in += stats.server_all_kbytes_in;
42 server_all_kbytes_out += stats.server_all_kbytes_out;
43 server_http_requests += stats.server_http_requests;
44 server_http_errors += stats.server_http_errors;
45 server_http_kbytes_in += stats.server_http_kbytes_in;
46 server_http_kbytes_out += stats.server_http_kbytes_out;
47 server_ftp_requests += stats.server_ftp_requests;
48 server_ftp_errors += stats.server_ftp_errors;
49 server_ftp_kbytes_in += stats.server_ftp_kbytes_in;
50 server_ftp_kbytes_out += stats.server_ftp_kbytes_out;
51 server_other_requests += stats.server_other_requests;
52 server_other_errors += stats.server_other_errors;
53 server_other_kbytes_in += stats.server_other_kbytes_in;
54 server_other_kbytes_out += stats.server_other_kbytes_out;
55 icp_pkts_sent += stats.icp_pkts_sent;
56 icp_pkts_recv += stats.icp_pkts_recv;
57 icp_queries_sent += stats.icp_queries_sent;
58 icp_replies_sent += stats.icp_replies_sent;
59 icp_queries_recv += stats.icp_queries_recv;
60 icp_replies_recv += stats.icp_replies_recv;
61 icp_replies_queued += stats.icp_replies_queued;
62 icp_query_timeouts += stats.icp_query_timeouts;
63 icp_kbytes_sent += stats.icp_kbytes_sent;
64 icp_kbytes_recv += stats.icp_kbytes_recv;
65 icp_q_kbytes_sent += stats.icp_q_kbytes_sent;
66 icp_r_kbytes_sent += stats.icp_r_kbytes_sent;
67 icp_q_kbytes_recv += stats.icp_q_kbytes_recv;
68 icp_r_kbytes_recv += stats.icp_r_kbytes_recv;
69#if USE_CACHE_DIGESTS
70 icp_times_used += stats.icp_times_used;
71 cd_times_used += stats.cd_times_used;
72 cd_msgs_sent += stats.cd_msgs_sent;
73 cd_msgs_recv += stats.cd_msgs_recv;
74 cd_memory += stats.cd_memory;
75 cd_local_memory += stats.cd_local_memory;
76 cd_kbytes_sent += stats.cd_kbytes_sent;
77 cd_kbytes_recv += stats.cd_kbytes_recv;
78#endif
79 unlink_requests += stats.unlink_requests;
80 page_faults += stats.page_faults;
81 select_loops += stats.select_loops;
82 cpu_time += stats.cpu_time;
83 wall_time += stats.wall_time;
84 swap_outs += stats.swap_outs;
85 swap_ins += stats.swap_ins;
86 swap_files_cleaned += stats.swap_files_cleaned;
87 aborted_requests += stats.aborted_requests;
b2aca62a
EB
88 hitValidationAttempts += stats.hitValidationAttempts;
89 hitValidationRefusalsDueToLocking += stats.hitValidationRefusalsDueToLocking;
90 hitValidationRefusalsDueToZeroSize += stats.hitValidationRefusalsDueToZeroSize;
91 hitValidationRefusalsDueToTimeLimit += stats.hitValidationRefusalsDueToTimeLimit;
92 hitValidationFailures += stats.hitValidationFailures;
8822ebee
AR
93
94 return *this;
95}
96
97Mgr::CountersAction::Pointer
98Mgr::CountersAction::Create(const CommandPointer &cmd)
99{
100 return new CountersAction(cmd);
101}
102
9dca980d 103Mgr::CountersAction::CountersAction(const CommandPointer &aCmd):
f53969cc 104 Action(aCmd), data()
8822ebee
AR
105{
106 debugs(16, 5, HERE);
107}
108
109void
110Mgr::CountersAction::add(const Action& action)
111{
112 debugs(16, 5, HERE);
113 data += dynamic_cast<const CountersAction&>(action).data;
114}
115
116void
117Mgr::CountersAction::collect()
118{
119 debugs(16, 5, HERE);
120 GetCountersStats(data);
121}
122
123void
124Mgr::CountersAction::dump(StoreEntry* entry)
125{
126 debugs(16, 5, HERE);
127 Must(entry != NULL);
128 DumpCountersStats(data, entry);
129}
130
131void
132Mgr::CountersAction::pack(Ipc::TypedMsgHdr& msg) const
133{
134 msg.setType(Ipc::mtCacheMgrResponse);
135 msg.putPod(data);
136}
137
138void
139Mgr::CountersAction::unpack(const Ipc::TypedMsgHdr& msg)
140{
141 msg.checkType(Ipc::mtCacheMgrResponse);
142 msg.getPod(data);
143}
f53969cc 144