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: protected:
MonitorInstance(MXS_MONITOR* pMonitor); MonitorInstance(MXS_MONITOR* pMonitor);
virtual void main() = 0;
static void main(void* pArg);
int m_status; /**< The current status of the monitor. */ int m_status; /**< The current status of the monitor. */
THREAD m_thread; /**< The thread handle of the monitoring thread. */ THREAD m_thread; /**< The thread handle of the monitoring thread. */
MXS_MONITOR* m_monitor; /**< The generic monitor structure. */ MXS_MONITOR* m_monitor; /**< The generic monitor structure. */

View File

@ -2522,4 +2522,10 @@ MonitorInstance::~MonitorInstance()
ss_dassert(!m_script); 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 * @param arg The MONITOR object for this monitor
*/ */
//static
void AuroraMonitor::main(void* data)
{
static_cast<AuroraMonitor*>(data)->main();
}
void AuroraMonitor::main() void AuroraMonitor::main()
{ {
if (mysql_thread_init()) if (mysql_thread_init())
@ -210,7 +204,7 @@ bool AuroraMonitor::start(const MXS_CONFIG_PARAMETER *params)
m_script = config_copy_string(params, "script"); m_script = config_copy_string(params, "script");
m_events = config_get_enum(params, "events", mxs_monitor_event_enum_values); 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_ERROR("Failed to start monitor thread for monitor '%s'.", m_monitor->name);
MXS_FREE(m_script); MXS_FREE(m_script);

View File

@ -38,5 +38,4 @@ private:
~AuroraMonitor(); ~AuroraMonitor();
void main(); 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 all data in the hashtable */
reset_cluster_info(); 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); 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 * @param arg The handle of the monitor
*/ */
//static
void GaleraMonitor::main(void* arg)
{
return static_cast<GaleraMonitor*>(arg)->main();
}
void GaleraMonitor::main() void GaleraMonitor::main()
{ {
MXS_MONITORED_SERVER *ptr; MXS_MONITORED_SERVER *ptr;

View File

@ -93,5 +93,4 @@ private:
void update_sst_donor_nodes(int is_cluster); void update_sst_donor_nodes(int is_cluster);
void main(); 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_events = config_get_enum(params, "events", mxs_monitor_event_enum_values);
m_thread = 0; 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; started = true;
} }
@ -65,12 +65,6 @@ bool GRMon::start(const MXS_CONFIG_PARAMETER* params)
return started; return started;
} }
void GRMon::main(void* data)
{
GRMon* mon = (GRMon*)data;
mon->main();
}
void GRMon::stop() void GRMon::stop()
{ {
ss_dassert(m_thread); ss_dassert(m_thread);

View File

@ -41,5 +41,4 @@ private:
~GRMon(); ~GRMon();
void main(); 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_script = config_copy_string(params, "script");
m_events = config_get_enum(params, "events", mxs_monitor_event_enum_values); 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_ERROR("Failed to start monitor thread for monitor '%s'.", m_monitor->name);
MXS_FREE(m_script); MXS_FREE(m_script);
@ -492,11 +492,6 @@ monitorDatabase(MXS_MONITOR* mon, MXS_MONITORED_SERVER *database)
* *
* @param arg The handle of the monitor * @param arg The handle of the monitor
*/ */
void MMMonitor::main(void* arg)
{
static_cast<MMMonitor*>(arg)->main();
}
void MMMonitor::main() void MMMonitor::main()
{ {
MXS_MONITOR* mon = m_monitor; MXS_MONITOR* mon = m_monitor;

View File

@ -44,5 +44,4 @@ private:
MXS_MONITORED_SERVER *get_current_master(); MXS_MONITORED_SERVER *get_current_master();
void main(); 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_script = config_copy_string(params, "script");
m_events = config_get_enum(params, "events", mxs_monitor_event_enum_values); 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_ERROR("Failed to start monitor thread for monitor '%s'.", m_monitor->name);
MXS_FREE(m_script); MXS_FREE(m_script);
@ -298,12 +298,6 @@ monitorDatabase(MXS_MONITORED_SERVER *database, char *defaultUser, char *default
* *
* @param arg The handle of the monitor * @param arg The handle of the monitor
*/ */
//static
void NDBCMonitor::main(void* arg)
{
static_cast<NDBCMonitor*>(arg)->main();
}
void NDBCMonitor::main() void NDBCMonitor::main()
{ {
MXS_MONITORED_SERVER *ptr; MXS_MONITORED_SERVER *ptr;

View File

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