MXS-1775 Move thread main function to maxscale::MonitorInstance
This commit is contained in:
@ -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. */
|
||||||
|
|||||||
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -38,5 +38,4 @@ private:
|
|||||||
~AuroraMonitor();
|
~AuroraMonitor();
|
||||||
|
|
||||||
void main();
|
void main();
|
||||||
static void main(void* data);
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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);
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -41,5 +41,4 @@ private:
|
|||||||
~GRMon();
|
~GRMon();
|
||||||
|
|
||||||
void main();
|
void main();
|
||||||
static void main(void* data);
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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);
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -41,5 +41,4 @@ private:
|
|||||||
~NDBCMonitor();
|
~NDBCMonitor();
|
||||||
|
|
||||||
void main();
|
void main();
|
||||||
static void main(void* data);
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user