MySQL 26.7.0
Source Code Documentation
statistics_instance_monitor_impl.hpp
Go to the documentation of this file.
1// Copyright (c) 2026, Oracle and/or its affiliates.
2//
3// This program is free software; you can redistribute it and/or modify
4// it under the terms of the GNU General Public License, version 2.0,
5// as published by the Free Software Foundation.
6//
7// This program is designed to work with certain software (including
8// but not limited to OpenSSL) that is licensed under separate terms,
9// as designated in a particular file or component or in included license
10// documentation. The authors of MySQL hereby grant you an additional
11// permission to link the program and your derivative works with the
12// separately licensed software that they have either included with
13// the program or referenced in the documentation.
14//
15// This program is distributed in the hope that it will be useful,
16// but WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18// GNU General Public License, version 2.0, for more details.
19//
20// You should have received a copy of the GNU General Public License
21// along with this program; if not, write to the Free Software
22// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
23
24#include <cassert>
27
28namespace mysql::scheduler {
29
30template <Statistic_allowed_type Type>
31void Statistics_instance_monitor::register_stat(const std::string &name,
32 std::size_t thread_num,
33 bool enable) {
34 auto ins_res = m_registry.insert(
35 std::make_pair(name, typename Statistic_type_traits<Type>::type()));
36 auto &stat = ins_res.first->second;
37 stat.init(thread_num, enable);
38}
39
40template <Statistic_allowed_type Type>
41std::optional<
44 auto it = m_registry.find(name);
45 if (it != m_registry.end()) {
46 return it->second;
47 }
48 return {};
49}
50
51template <Statistic_allowed_type Type>
53Statistics_instance_monitor::get_stat(const std::string &name) {
54 return m_registry[name];
55}
56
57} // namespace mysql::scheduler
Statistic_type_traits< Type >::type & get_stat(const std::string &name)
Get accumulated statistic value w/o bound checking.
Definition: statistics_instance_monitor_impl.hpp:53
void register_stat(const std::string &name, std::size_t thread_num=1, bool enable=true)
Get statistic value.
Definition: statistics_instance_monitor_impl.hpp:31
std::optional< std::reference_wrapper< typename Statistic_type_traits< Type >::type > > find_stat(const std::string &name)
Get accumulated statistic value.
Definition: statistics_instance_monitor_impl.hpp:43
Registry_type m_registry
Definition: statistics_instance_monitor.h:90
Definition: base_dependency_tracker.h:41
required string type
Definition: replication_group_member_actions.proto:34
case opt name
Definition: sslopt-case.h:29
Helper structure that translates types between underlying supported statistic type and concrete concu...
Definition: statistics_type_traits.h:38