MXS-2271 Cleanup internal monitor header and its functions

Some functions still accessed the servers-array. Most functions are now
inside class. Removed unused defines.
This commit is contained in:
Esa Korhonen 2019-03-07 18:51:54 +02:00
parent e7abc53b70
commit ac5ee1278c
11 changed files with 139 additions and 211 deletions

View File

@ -435,7 +435,20 @@ protected:
private:
friend class MonitorManager;
/**
* @brief Add a server to a monitor.
*
* Add a server to a monitor, provided the server is not currently
* being monitored by any monitor. Before adding the server to the
* monitor, the monitor is stopped if it is running and after the
* addition it is restarted if it was running.
*
* @param server A server.
*
* @return True, if the monitor was added, false otherwise.
*/
void add_server(SERVER* server);
void remove_server(SERVER* server);
/**
@ -466,20 +479,6 @@ private:
*/
int launch_command(MXS_MONITORED_SERVER* ptr, EXTERNCMD* cmd);
/**
* @brief Add a server to a monitor.
*
* Add a server to a monitor, provided the server is not currently
* being monitored by any monitor. Before adding the server to the
* monitor, the monitor is stopped if it is running and after the
* addition it is restarted if it was running.
*
* @param monitor A monitor.
* @param server A server.
*
* @return True, if the monitor was added, false otherwise.
*/
static bool add_server(Monitor* mon, SERVER* server);
/**
* @brief Remove a server from a monitor.

View File

@ -3614,7 +3614,7 @@ int create_new_service(CONFIG_CONTEXT* obj)
if (!cluster.empty())
{
Monitor* pMonitor = monitor_find(cluster.c_str());
Monitor* pMonitor = MonitorManager::find_monitor(cluster.c_str());
if (pMonitor)
{

View File

@ -137,7 +137,7 @@ bool runtime_add_server(Monitor* mon, Server* server)
mxb_assert(mon && server);
bool rval = false;
if (monitor_server_in_use(server))
if (MonitorManager::server_is_monitored(server))
{
MXS_ERROR("Server '%s' is already monitored.", server->name());
}
@ -167,7 +167,7 @@ bool runtime_remove_server(Monitor* mon, Server* server)
mxb_assert(mon && server);
bool rval = false;
if (monitor_server_in_use(server) != mon)
if (MonitorManager::server_is_monitored(server) != mon)
{
MXS_ERROR("Server '%s' is not monitored by '%s'.", server->name(), mon->m_name);
}
@ -209,7 +209,7 @@ bool runtime_link_server(Server* server, const char* target)
bool rval = false;
Service* service = service_internal_find(target);
Monitor* monitor = service ? NULL : monitor_find(target);
Monitor* monitor = service ? NULL : MonitorManager::find_monitor(target);
if (service)
{
@ -263,7 +263,7 @@ bool runtime_unlink_server(Server* server, const char* target)
bool rval = false;
Service* service = service_internal_find(target);
Monitor* monitor = service ? NULL : monitor_find(target);
Monitor* monitor = service ? NULL : MonitorManager::find_monitor(target);
if (service || monitor)
{
@ -380,7 +380,7 @@ bool runtime_destroy_server(Server* server)
std::lock_guard<std::mutex> guard(crt_lock);
bool rval = false;
if (service_server_in_use(server) || monitor_server_in_use(server))
if (service_server_in_use(server) || MonitorManager::server_is_monitored(server))
{
const char* err = "Cannot destroy server '%s' as it is used by at least "
"one service or monitor";
@ -696,7 +696,7 @@ bool runtime_alter_monitor(Monitor* monitor, const char* key, const char* value)
bool was_running = (monitor->state() == MONITOR_STATE_RUNNING);
if (was_running)
{
MonitorManager::monitor_stop(monitor);
MonitorManager::stop_monitor(monitor);
}
bool success = do_alter_monitor(monitor, key, value);
if (success)
@ -705,7 +705,7 @@ bool runtime_alter_monitor(Monitor* monitor, const char* key, const char* value)
}
if (was_running)
{
MonitorManager::monitor_start(monitor);
MonitorManager::start_monitor(monitor);
}
return success;
}
@ -1210,9 +1210,9 @@ bool runtime_create_monitor(const char* name, const char* module)
std::lock_guard<std::mutex> guard(crt_lock);
bool rval = false;
if (monitor_find(name) == NULL)
if (MonitorManager::find_monitor(name) == NULL)
{
Monitor* monitor = monitor_repurpose_destroyed(name, module);
Monitor* monitor = MonitorManager::reactivate_monitor(name, module);
std::string reason;
if (monitor)
@ -1432,13 +1432,7 @@ bool runtime_destroy_monitor(Monitor* monitor)
if (rval)
{
MonitorManager::monitor_stop(monitor);
while (!monitor->m_servers.empty())
{
MonitorManager::remove_server(monitor, monitor->m_servers[0]->server);
}
monitor_deactivate(monitor);
MonitorManager::deactivate_monitor(monitor);
MXS_NOTICE("Destroyed monitor '%s'", monitor->m_name);
}
@ -1735,7 +1729,7 @@ static bool server_contains_required_fields(json_t* json)
static bool server_relation_is_valid(const std::string& type, const std::string& value)
{
return (type == CN_SERVICES && service_internal_find(value.c_str()))
|| (type == CN_MONITORS && monitor_find(value.c_str()));
|| (type == CN_MONITORS && MonitorManager::find_monitor(value.c_str()));
}
static bool filter_to_service_relation_is_valid(const std::string& type, const std::string& value)
@ -2258,7 +2252,7 @@ Monitor* runtime_create_monitor_from_json(json_t* json)
if (runtime_create_monitor(name, module))
{
rval = monitor_find(name);
rval = MonitorManager::find_monitor(name);
mxb_assert(rval);
if (!runtime_alter_monitor_from_json(rval, json))
@ -2268,7 +2262,7 @@ Monitor* runtime_create_monitor_from_json(json_t* json)
}
else
{
MonitorManager::monitor_start(rval);
MonitorManager::start_monitor(rval);
}
}
}
@ -2420,7 +2414,7 @@ bool runtime_alter_monitor_from_json(Monitor* monitor, json_t* new_json)
if (parameters)
{
bool restart = (monitor->state() != MONITOR_STATE_STOPPED);
MonitorManager::monitor_stop(monitor);
MonitorManager::stop_monitor(monitor);
const char* key;
json_t* value;
@ -2451,7 +2445,7 @@ bool runtime_alter_monitor_from_json(Monitor* monitor, json_t* new_json)
if (restart)
{
MonitorManager::monitor_start(monitor);
MonitorManager::start_monitor(monitor);
}
}
}

View File

@ -2186,7 +2186,7 @@ int main(int argc, char** argv)
}
/** Start all monitors */
monitor_start_all();
MonitorManager::start_all_monitors();
if (cnf->config_check)
{
@ -2258,7 +2258,7 @@ int main(int argc, char** argv)
mxs_admin_shutdown();
/*< Stop all monitors */
monitor_stop_all();
MonitorManager::stop_all_monitors();
/*< Destroy all monitors */
MonitorManager::destroy_all_monitors();

View File

@ -22,30 +22,6 @@
#define MON_ARG_MAX 8192
#define DEFAULT_CONNECT_TIMEOUT 3
#define DEFAULT_READ_TIMEOUT 3
#define DEFAULT_WRITE_TIMEOUT 3
#define DEFAULT_CONNECTION_ATTEMPTS 1
#define DEFAULT_MONITOR_INTERVAL 2000 // in milliseconds
/** Default maximum journal age in seconds */
#define DEFAULT_JOURNAL_MAX_AGE 28800
/** Default script execution timeout in seconds */
#define DEFAULT_SCRIPT_TIMEOUT 90
/**
* Monitor network timeout types
*/
typedef enum
{
MONITOR_CONNECT_TIMEOUT = 0,
MONITOR_READ_TIMEOUT = 1,
MONITOR_WRITE_TIMEOUT = 2,
MONITOR_CONNECT_ATTEMPTS = 3
} monitor_timeouts_t;
/* Is not really an event as the other values, but is a valid config setting and also the default.
* Bitmask value matches all events. */
static const MXS_ENUM_VALUE mxs_monitor_event_default_enum = {"all", ~0ULL};
@ -77,8 +53,6 @@ static const MXS_ENUM_VALUE mxs_monitor_event_enum_values[] =
{NULL}
};
std::unique_ptr<ResultSet> monitor_get_list();
/**
* This class contains internal monitor management functions that should not be exposed in the public
* monitor class. It's a friend of MXS_MONITOR.
@ -98,6 +72,15 @@ public:
static Monitor* create_monitor(const std::string& name, const std::string& module,
MXS_CONFIG_PARAMETER* params);
/**
* Mark monitor as deactivated. A deactivated monitor appears not to exist, as if it had been
* destroyed. Any servers the monitor had are removed. The monitor should not be serialized after
* this function.
*
* @param monitor Monitor to deactivate
*/
static void deactivate_monitor(Monitor* monitor);
/**
* @brief Destroys all monitors. At this point all monitors should
* have been stopped.
@ -106,27 +89,24 @@ public:
*/
static void destroy_all_monitors();
static void monitor_start(Monitor*);
/**
* @brief Populate services with the servers of the monitors.
*/
static void populate_services();
static bool add_server(Monitor* mon, SERVER* server);
static void remove_server(Monitor* mon, SERVER* server)
{
Monitor::remove_server(mon, server);
}
static void start_monitor(Monitor* monitor);
/**
* Stop a given monitor
*
* @param monitor The monitor to stop
*/
static void monitor_stop(Monitor*);
static void stop_monitor(Monitor* monitor);
static void stop_all_monitors();
static void start_all_monitors();
static Monitor* find_monitor(const char* name);
/**
* @brief Populate services with the servers of the monitors.
*/
static void populate_services();
/**
* Get links to monitors that relate to a server.
@ -145,39 +125,28 @@ public:
*/
static json_t* monitor_list_to_json(const char* host);
/**
* Check if a server is being monitored and return the monitor.
* @param server Server that is queried
* @return The monitor watching this server, or NULL if not monitored
*/
static Monitor* server_is_monitored(const SERVER* server);
static Monitor* reactivate_monitor(const char* name, const char* module);
static void show_all_monitors(DCB* dcb);
static void monitor_show(DCB* dcb, Monitor* monitor);
static void monitor_list(DCB*);
static std::unique_ptr<ResultSet> monitor_get_list();
/**
* Waits until all running monitors have advanced one tick.
*/
static void monitor_debug_wait();
static void debug_wait_one_tick();
};
/**
* @brief Mark monitor as deactivated
*
* A deactivated monitor appears not to exist, as if it had been
* destroyed.
*
* @param monitor
*/
void monitor_deactivate(Monitor* monitor);
void monitor_stop_all();
void monitor_start_all();
Monitor* monitor_find(const char*);
Monitor* monitor_repurpose_destroyed(const char* name, const char* module);
void monitor_show(DCB*, Monitor*);
void monitor_show_all(DCB*);
void monitor_list(DCB*);
void monitor_set_journal_max_age(Monitor* mon, time_t value);
/**
* @brief Serialize a monitor to a file
*
@ -187,10 +156,3 @@ void monitor_set_journal_max_age(Monitor* mon, time_t value);
* @return True if serialization was successful
*/
bool monitor_serialize(const Monitor* monitor);
/**
* Check if a server is being monitored and return the monitor.
* @param server Server that is queried
* @return The monitor watching this server, or NULL if not monitored
*/
Monitor* monitor_server_in_use(const SERVER* server);

View File

@ -327,7 +327,7 @@ static bool process_argument(const MODULECMD* cmd,
break;
case MODULECMD_ARG_MONITOR:
if ((arg->value.monitor = monitor_find((char*)value)))
if ((arg->value.monitor = MonitorManager::find_monitor((char*) value)))
{
const char* eff_name = mxs_module_get_effective_name(arg->value.monitor->m_module.c_str());
if (MODULECMD_ALLOW_NAME_MISMATCH(type) || strcasecmp(cmd->domain, eff_name) == 0)

View File

@ -215,23 +215,34 @@ bool Monitor::configure(const MXS_CONFIG_PARAMETER* params)
// The monitor serverlist has already been checked to be valid. Empty value is ok too.
// First, remove all servers.
auto servers_temp = params->get_server_list(CN_SERVERS);
while (!m_servers.empty())
{
SERVER* remove = m_servers.front()->server;
remove_server(remove);
}
auto servers_temp = params->get_server_list(CN_SERVERS);
bool error = false;
for (auto elem : servers_temp)
{
// This function checks if server is already monitored. TODO: This should be a config error.
add_server(elem);
// TODO: Monitor should not access MonitorManager.
Monitor* srv_monitored_by = MonitorManager::server_is_monitored(elem);
if (srv_monitored_by)
{
mxb_assert(srv_monitored_by != this);
MXS_ERROR("Server '%s' is already monitored by '%s', cannot add it to another monitor.",
elem->name(), srv_monitored_by->m_name);
error = true;
}
else
{
add_server(elem);
}
}
/* The previous config values were normal types and were checked by the config manager
* to be correct. The following is a complicated type and needs to be checked separately. */
bool error = false;
auto threshold_string = params->get_string(CN_DISK_SPACE_THRESHOLD);
if (!set_disk_space_threshold(threshold_string))
{
@ -266,7 +277,7 @@ void MonitorManager::destroy_all_monitors()
}
}
void MonitorManager::monitor_start(Monitor* monitor)
void MonitorManager::start_monitor(Monitor* monitor)
{
mxb_assert(monitor);
@ -282,11 +293,6 @@ void MonitorManager::monitor_start(Monitor* monitor)
}
}
bool MonitorManager::add_server(Monitor* mon, SERVER* server)
{
return false;
}
void MonitorManager::populate_services()
{
this_unit.foreach_monitor([](Monitor* pMonitor) -> bool {
@ -298,18 +304,18 @@ void MonitorManager::populate_services()
/**
* Start all monitors
*/
void monitor_start_all()
void MonitorManager::start_all_monitors()
{
this_unit.foreach_monitor([](Monitor* monitor) {
if (monitor->m_active)
{
MonitorManager::monitor_start(monitor);
MonitorManager::start_monitor(monitor);
}
return true;
});
}
void MonitorManager::monitor_stop(Monitor* monitor)
void MonitorManager::stop_monitor(Monitor* monitor)
{
mxb_assert(monitor);
@ -322,8 +328,17 @@ void MonitorManager::monitor_stop(Monitor* monitor)
}
}
void monitor_deactivate(Monitor* monitor)
void MonitorManager::deactivate_monitor(Monitor* monitor)
{
// This cannot be done with configure(), since other, module-specific config settings may depend on the
// "servers"-setting of the base monitor. Directly manipulate monitor field for now, later use a dtor
// to cleanly "deactivate" inherited objects.
stop_monitor(monitor);
while (!monitor->m_servers.empty())
{
monitor->remove_server(monitor->m_servers.front()->server);
}
this_unit.run_behind_lock([monitor](){
monitor->m_active = false;
});
@ -332,72 +347,30 @@ void monitor_deactivate(Monitor* monitor)
/**
* Shutdown all running monitors
*/
void monitor_stop_all()
void MonitorManager::stop_all_monitors()
{
this_unit.foreach_monitor([](Monitor* monitor) {
if (monitor->m_active)
{
MonitorManager::monitor_stop(monitor);
MonitorManager::stop_monitor(monitor);
}
return true;
});
}
//static
bool Monitor::add_server(Monitor* mon, SERVER* server)
{
mxb_assert(mon && server);
bool rval = false;
if (monitor_server_in_use(server))
{
MXS_ERROR("Server '%s' is already monitored.", server->name());
}
else
{
rval = true;
monitor_state_t old_state = mon->state();
if (old_state == MONITOR_STATE_RUNNING)
{
MonitorManager::monitor_stop(mon);
}
mon->add_server(server);
if (old_state == MONITOR_STATE_RUNNING)
{
MonitorManager::monitor_start(mon);
}
}
return rval;
}
/**
* @brief Add a server to the monitor.
*
* It is assumed that the monitor is currently not running and that the
* server is not currently being monitored.
*
* @param server A server.
* @param server A server
*/
void Monitor::add_server(SERVER* server)
{
mxb_assert(state() != MONITOR_STATE_RUNNING);
mxb_assert(!monitor_server_in_use(server));
MXS_MONITORED_SERVER* db = new (std::nothrow) MXS_MONITORED_SERVER(server);
MXS_ABORT_IF_NULL(db);
using Guard = std::unique_lock<std::mutex>;
Guard guard(m_lock);
m_servers.push_back(db);
guard.unlock();
auto new_server = new MXS_MONITORED_SERVER(server);
m_servers.push_back(new_server);
server_added(server);
}
@ -449,14 +422,14 @@ void Monitor::remove_server(Monitor* mon, SERVER* server)
if (old_state == MONITOR_STATE_RUNNING)
{
MonitorManager::monitor_stop(mon);
MonitorManager::stop_monitor(mon);
}
mon->remove_server(server);
if (old_state == MONITOR_STATE_RUNNING)
{
MonitorManager::monitor_start(mon);
MonitorManager::start_monitor(mon);
}
}
@ -502,7 +475,7 @@ void Monitor::remove_server(SERVER* server)
*
* @param dcb DCB for printing output
*/
void monitor_show_all(DCB* dcb)
void MonitorManager::show_all_monitors(DCB* dcb)
{
this_unit.foreach_monitor([dcb](Monitor* monitor) {
if (monitor->m_active)
@ -518,7 +491,7 @@ void monitor_show_all(DCB* dcb)
*
* @param dcb DCB for printing output
*/
void monitor_show(DCB* dcb, Monitor* monitor)
void MonitorManager::monitor_show(DCB* dcb, Monitor* monitor)
{
monitor->show(dcb);
}
@ -563,7 +536,7 @@ void Monitor::show(DCB* dcb)
*
* @param dcb DCB for printing output
*/
void monitor_list(DCB* dcb)
void MonitorManager::monitor_list(DCB* dcb)
{
dcb_printf(dcb, "---------------------+---------------------\n");
dcb_printf(dcb, "%-20s | Status\n", "Monitor");
@ -590,7 +563,7 @@ void monitor_list(DCB* dcb)
* @param name The name of the monitor
* @return Pointer to the monitor or NULL
*/
Monitor* monitor_find(const char* name)
Monitor* MonitorManager::find_monitor(const char* name)
{
Monitor* rval = nullptr;
this_unit.foreach_monitor([&rval, name](Monitor* ptr) {
@ -608,7 +581,7 @@ Monitor* monitor_find(const char* name)
* @param name The name of the monitor
* @return Pointer to the destroyed monitor or NULL if monitor is not found
*/
Monitor* monitor_repurpose_destroyed(const char* name, const char* module)
Monitor* MonitorManager::reactivate_monitor(const char* name, const char* module)
{
Monitor* rval = NULL;
this_unit.foreach_monitor([&rval, name, module](Monitor* monitor) {
@ -628,7 +601,7 @@ Monitor* monitor_repurpose_destroyed(const char* name, const char* module)
*
* @return A Result set
*/
std::unique_ptr<ResultSet> monitor_get_list()
std::unique_ptr<ResultSet> MonitorManager::monitor_get_list()
{
std::unique_ptr<ResultSet> set = ResultSet::create({"Monitor", "Status"});
this_unit.foreach_monitor([&set](Monitor* ptr) {
@ -1301,7 +1274,7 @@ static void mon_log_state_change(MXS_MONITORED_SERVER* ptr)
prev.c_str(), next.c_str());
}
Monitor* monitor_server_in_use(const SERVER* server)
Monitor* MonitorManager::server_is_monitored(const SERVER* server)
{
Monitor* rval = nullptr;
this_unit.foreach_monitor([&rval, server](Monitor* monitor) {
@ -2328,7 +2301,7 @@ void Monitor::populate_services()
}
}
void MonitorManager::monitor_debug_wait()
void MonitorManager::debug_wait_one_tick()
{
using namespace std::chrono;
std::map<Monitor*, uint64_t> ticks;

View File

@ -125,7 +125,7 @@ bool Resource::matching_variable_path(const string& path, const string& target)
if ((path == ":service" && service_find(target.c_str()))
|| (path == ":server" && Server::find_by_unique_name(target))
|| (path == ":filter" && filter_find(target.c_str()))
|| (path == ":monitor" && monitor_find(target.c_str()))
|| (path == ":monitor" && MonitorManager::find_monitor(target.c_str()))
|| (path == ":module" && get_module(target.c_str(), NULL))
|| (path == ":inetuser" && admin_inet_user_exists(target.c_str()))
|| (path == ":unixuser" && admin_linux_account_enabled(target.c_str())))
@ -259,20 +259,20 @@ private:
HttpResponse cb_stop_monitor(const HttpRequest& request)
{
Monitor* monitor = monitor_find(request.uri_part(1).c_str());
Monitor* monitor = MonitorManager::find_monitor(request.uri_part(1).c_str());
if (monitor)
{
MonitorManager::monitor_stop(monitor);
MonitorManager::stop_monitor(monitor);
}
return HttpResponse(MHD_HTTP_NO_CONTENT);
}
HttpResponse cb_start_monitor(const HttpRequest& request)
{
Monitor* monitor = monitor_find(request.uri_part(1).c_str());
Monitor* monitor = MonitorManager::find_monitor(request.uri_part(1).c_str());
if (monitor)
{
MonitorManager::monitor_start(monitor);
MonitorManager::start_monitor(monitor);
}
return HttpResponse(MHD_HTTP_NO_CONTENT);
}
@ -390,7 +390,7 @@ HttpResponse cb_create_service_listener(const HttpRequest& request)
HttpResponse cb_alter_monitor(const HttpRequest& request)
{
Monitor* monitor = monitor_find(request.uri_part(1).c_str());
Monitor* monitor = MonitorManager::find_monitor(request.uri_part(1).c_str());
mxb_assert(monitor && request.get_json());
if (runtime_alter_monitor_from_json(monitor, request.get_json()))
@ -403,7 +403,7 @@ HttpResponse cb_alter_monitor(const HttpRequest& request)
HttpResponse cb_alter_monitor_server_relationship(const HttpRequest& request)
{
Monitor* monitor = monitor_find(request.uri_part(1).c_str());
Monitor* monitor = MonitorManager::find_monitor(request.uri_part(1).c_str());
mxb_assert(monitor && request.get_json());
if (runtime_alter_monitor_relationships_from_json(monitor, request.get_json()))
@ -492,7 +492,7 @@ HttpResponse cb_delete_server(const HttpRequest& request)
HttpResponse cb_delete_monitor(const HttpRequest& request)
{
Monitor* monitor = monitor_find(request.uri_part(1).c_str());
Monitor* monitor = MonitorManager::find_monitor(request.uri_part(1).c_str());
mxb_assert(monitor);
if (runtime_destroy_monitor(monitor))
@ -613,7 +613,7 @@ HttpResponse cb_all_monitors(const HttpRequest& request)
HttpResponse cb_get_monitor(const HttpRequest& request)
{
Monitor* monitor = monitor_find(request.uri_part(1).c_str());
Monitor* monitor = MonitorManager::find_monitor(request.uri_part(1).c_str());
mxb_assert(monitor);
return HttpResponse(MHD_HTTP_OK, monitor_to_json(monitor, request.host()));
}
@ -742,7 +742,7 @@ HttpResponse cb_unix_user(const HttpRequest& request)
HttpResponse cb_monitor_wait(const HttpRequest& request)
{
MonitorManager::monitor_debug_wait();
MonitorManager::debug_wait_one_tick();
return HttpResponse(MHD_HTTP_OK);
}
HttpResponse cb_create_user(const HttpRequest& request)

View File

@ -950,7 +950,7 @@ bool mxs::server_set_status(SERVER* srv, int bit, string* errmsg_out)
/* First check if the server is monitored. This isn't done under a lock
* but the race condition cannot cause significant harm. Monitors are never
* freed so the pointer stays valid. */
Monitor* mon = monitor_server_in_use(srv);
Monitor* mon = MonitorManager::server_is_monitored(srv);
if (mon)
{
written = mon->set_server_status(srv, bit, errmsg_out);
@ -969,7 +969,7 @@ bool mxs::server_clear_status(SERVER* srv, int bit, string* errmsg_out)
{
// See server_set_status().
bool written = false;
Monitor* mon = monitor_server_in_use(srv);
Monitor* mon = MonitorManager::server_is_monitored(srv);
if (mon)
{
written = mon->clear_server_status(srv, bit, errmsg_out);

View File

@ -291,7 +291,7 @@ struct subcommand showoptions[] =
{0 }
},
{
"monitor", 1, 1, (FN)monitor_show,
"monitor", 1, 1, (FN)MonitorManager::monitor_show,
"Show monitor details",
"Usage: show monitor MONITOR\n"
"\n"
@ -302,7 +302,7 @@ struct subcommand showoptions[] =
{ARG_TYPE_MONITOR}
},
{
"monitors", 0, 0, (FN)monitor_show_all,
"monitors", 0, 0, (FN)MonitorManager::show_all_monitors,
"Show all monitors",
"Usage: show monitors",
{0 }
@ -482,7 +482,7 @@ struct subcommand listoptions[] =
{0 }
},
{
"monitors", 0, 0, (FN)monitor_list,
"monitors", 0, 0, (FN)MonitorManager::monitor_list,
"List all monitors",
"Usage: list monitors",
{0 }
@ -1293,7 +1293,7 @@ static void createListener(DCB* dcb,
static void createMonitor(DCB* dcb, const char* name, const char* module)
{
if (monitor_find(name))
if (MonitorManager::find_monitor(name))
{
dcb_printf(dcb, "Monitor '%s' already exists\n", name);
}
@ -1993,7 +1993,7 @@ static unsigned long convert_arg(char* arg, int arg_type)
case ARG_TYPE_MONITOR:
fix_object_name(arg);
rval = (unsigned long)monitor_find(arg);
rval = (unsigned long) MonitorManager::find_monitor(arg);
break;
case ARG_TYPE_FILTER:
@ -2716,7 +2716,7 @@ static void show_qc_all(DCB* dcb)
*/
static void shutdown_monitor(DCB* dcb, Monitor* monitor)
{
MonitorManager::monitor_stop(monitor);
MonitorManager::stop_monitor(monitor);
}
/**
@ -2727,7 +2727,7 @@ static void shutdown_monitor(DCB* dcb, Monitor* monitor)
*/
static void restart_monitor(DCB* dcb, Monitor* monitor)
{
MonitorManager::monitor_start(monitor);
MonitorManager::start_monitor(monitor);
}
/**

View File

@ -186,7 +186,7 @@ static void exec_show_modules(DCB* dcb, MAXINFO_TREE* tree)
*/
static void exec_show_monitors(DCB* dcb, MAXINFO_TREE* tree)
{
monitor_get_list()->write(dcb);
MonitorManager::monitor_get_list()->write(dcb);
}
/**
@ -503,10 +503,10 @@ void exec_shutdown_monitor(DCB* dcb, MAXINFO_TREE* tree)
char errmsg[120];
if (tree && tree->value)
{
Monitor* monitor = monitor_find(tree->value);
Monitor* monitor = MonitorManager::find_monitor(tree->value);
if (monitor)
{
MonitorManager::monitor_stop(monitor);
MonitorManager::stop_monitor(monitor);
maxinfo_send_ok(dcb);
}
else
@ -612,10 +612,10 @@ void exec_restart_monitor(DCB* dcb, MAXINFO_TREE* tree)
char errmsg[120];
if (tree && tree->value)
{
Monitor* monitor = monitor_find(tree->value);
Monitor* monitor = MonitorManager::find_monitor(tree->value);
if (monitor)
{
MonitorManager::monitor_start(monitor);
MonitorManager::start_monitor(monitor);
maxinfo_send_ok(dcb);
}
else