MXS-1775 Move thread main function to maxscale::MonitorInstance

This commit is contained in:
Johan Wikman
2018-05-16 11:09:11 +03:00
parent 3c277f4e5e
commit 1304fd6147
12 changed files with 15 additions and 39 deletions

View File

@ -30,6 +30,10 @@ public:
protected:
MonitorInstance(MXS_MONITOR* pMonitor);
virtual void main() = 0;
static void main(void* pArg);
int m_status; /**< The current status of the monitor. */
THREAD m_thread; /**< The thread handle of the monitoring thread. */
MXS_MONITOR* m_monitor; /**< The generic monitor structure. */

View File

@ -2522,4 +2522,10 @@ MonitorInstance::~MonitorInstance()
ss_dassert(!m_script);
}
//static
void MonitorInstance::main(void* pArg)
{
static_cast<MonitorInstance*>(pArg)->main();
}
}

View File

@ -119,12 +119,6 @@ void update_server_status(MXS_MONITOR *monitor, MXS_MONITORED_SERVER *database)
*
* @param arg The MONITOR object for this monitor
*/
//static
void AuroraMonitor::main(void* data)
{
static_cast<AuroraMonitor*>(data)->main();
}
void AuroraMonitor::main()
{
if (mysql_thread_init())
@ -210,7 +204,7 @@ bool AuroraMonitor::start(const MXS_CONFIG_PARAMETER *params)
m_script = config_copy_string(params, "script");
m_events = config_get_enum(params, "events", mxs_monitor_event_enum_values);
if (thread_start(&m_thread, &AuroraMonitor::main, this, 0) == NULL)
if (thread_start(&m_thread, &maxscale::MonitorInstance::main, this, 0) == NULL)
{
MXS_ERROR("Failed to start monitor thread for monitor '%s'.", m_monitor->name);
MXS_FREE(m_script);

View File

@ -38,5 +38,4 @@ private:
~AuroraMonitor();
void main();
static void main(void* data);
};

View File

@ -189,7 +189,7 @@ bool GaleraMonitor::start(const MXS_CONFIG_PARAMETER *params)
/* Reset all data in the hashtable */
reset_cluster_info();
if (thread_start(&m_thread, &GaleraMonitor::main, this, 0) == NULL)
if (thread_start(&m_thread, &maxscale::MonitorInstance::main, this, 0) == NULL)
{
MXS_ERROR("Failed to start monitor thread for monitor '%s'.", m_monitor->name);
}
@ -503,12 +503,6 @@ void GaleraMonitor::monitorDatabase(MXS_MONITORED_SERVER *database)
*
* @param arg The handle of the monitor
*/
//static
void GaleraMonitor::main(void* arg)
{
return static_cast<GaleraMonitor*>(arg)->main();
}
void GaleraMonitor::main()
{
MXS_MONITORED_SERVER *ptr;

View File

@ -93,5 +93,4 @@ private:
void update_sst_donor_nodes(int is_cluster);
void main();
static void main(void* data);
};

View File

@ -57,7 +57,7 @@ bool GRMon::start(const MXS_CONFIG_PARAMETER* params)
m_events = config_get_enum(params, "events", mxs_monitor_event_enum_values);
m_thread = 0;
if (thread_start(&m_thread, GRMon::main, this, 0) != NULL)
if (thread_start(&m_thread, &maxscale::MonitorInstance::main, this, 0) != NULL)
{
started = true;
}
@ -65,12 +65,6 @@ bool GRMon::start(const MXS_CONFIG_PARAMETER* params)
return started;
}
void GRMon::main(void* data)
{
GRMon* mon = (GRMon*)data;
mon->main();
}
void GRMon::stop()
{
ss_dassert(m_thread);

View File

@ -41,5 +41,4 @@ private:
~GRMon();
void main();
static void main(void* data);
};

View File

@ -139,7 +139,7 @@ bool MMMonitor::start(const MXS_CONFIG_PARAMETER *params)
m_script = config_copy_string(params, "script");
m_events = config_get_enum(params, "events", mxs_monitor_event_enum_values);
if (thread_start(&m_thread, MMMonitor::main, this, 0) == NULL)
if (thread_start(&m_thread, &maxscale::MonitorInstance::main, this, 0) == NULL)
{
MXS_ERROR("Failed to start monitor thread for monitor '%s'.", m_monitor->name);
MXS_FREE(m_script);
@ -492,11 +492,6 @@ monitorDatabase(MXS_MONITOR* mon, MXS_MONITORED_SERVER *database)
*
* @param arg The handle of the monitor
*/
void MMMonitor::main(void* arg)
{
static_cast<MMMonitor*>(arg)->main();
}
void MMMonitor::main()
{
MXS_MONITOR* mon = m_monitor;

View File

@ -44,5 +44,4 @@ private:
MXS_MONITORED_SERVER *get_current_master();
void main();
static void main(void* data);
};

View File

@ -122,7 +122,7 @@ bool NDBCMonitor::start(const MXS_CONFIG_PARAMETER *params)
m_script = config_copy_string(params, "script");
m_events = config_get_enum(params, "events", mxs_monitor_event_enum_values);
if (thread_start(&m_thread, &NDBCMonitor::main, this, 0) == NULL)
if (thread_start(&m_thread, &maxscale::MonitorInstance::main, this, 0) == NULL)
{
MXS_ERROR("Failed to start monitor thread for monitor '%s'.", m_monitor->name);
MXS_FREE(m_script);
@ -298,12 +298,6 @@ monitorDatabase(MXS_MONITORED_SERVER *database, char *defaultUser, char *default
*
* @param arg The handle of the monitor
*/
//static
void NDBCMonitor::main(void* arg)
{
static_cast<NDBCMonitor*>(arg)->main();
}
void NDBCMonitor::main()
{
MXS_MONITORED_SERVER *ptr;

View File

@ -41,5 +41,4 @@ private:
~NDBCMonitor();
void main();
static void main(void* data);
};