Fixed graceful shutdown.

This commit is contained in:
XMRig 2017-07-18 05:20:36 +03:00
parent 9732636155
commit a3988374f0
15 changed files with 62 additions and 4 deletions

View file

@ -135,6 +135,8 @@ void Client::connect(const Url *url)
void Client::disconnect()
{
uv_timer_stop(&m_keepAliveTimer);
uv_timer_stop(&m_responseTimer);
uv_timer_stop(&m_retriesTimer);
m_failures = -1;

View file

@ -76,6 +76,16 @@ void Network::connect()
}
void Network::stop()
{
if (m_donate) {
m_donate->stop();
}
m_strategy->stop();
}
void Network::onActive(Client *client)
{
if (client->id() == -1) {

View file

@ -45,6 +45,7 @@ public:
~Network();
void connect();
void stop();
static char *userAgent();

View file

@ -62,6 +62,13 @@ void DonateStrategy::connect()
}
void DonateStrategy::stop()
{
uv_timer_stop(&m_timer);
m_client->disconnect();
}
void DonateStrategy::onClose(Client *client, int failures)
{
}
@ -96,7 +103,7 @@ void DonateStrategy::idle()
}
void DonateStrategy::stop()
void DonateStrategy::suspend()
{
m_client->disconnect();
@ -115,5 +122,5 @@ void DonateStrategy::onTimer(uv_timer_t *handle)
return strategy->connect();
}
strategy->stop();
strategy->suspend();
}

View file

@ -48,6 +48,7 @@ public:
int64_t submit(const JobResult &result) override;
void connect() override;
void stop() override;
protected:
void onClose(Client *client, int failures) override;
@ -57,7 +58,7 @@ protected:
private:
void idle();
void stop();
void suspend();
static void onTimer(uv_timer_t *handle);

View file

@ -61,6 +61,14 @@ void FailoverStrategy::resume()
}
void FailoverStrategy::stop()
{
for (size_t i = 0; i < m_pools.size(); ++i) {
m_pools[i]->disconnect();
}
}
void FailoverStrategy::onClose(Client *client, int failures)
{
if (failures == -1) {

View file

@ -48,6 +48,7 @@ public:
int64_t submit(const JobResult &result) override;
void connect() override;
void resume() override;
void stop() override;
protected:
void onClose(Client *client, int failures) override;

View file

@ -60,6 +60,12 @@ void SinglePoolStrategy::resume()
}
void SinglePoolStrategy::stop()
{
m_client->disconnect();
}
void SinglePoolStrategy::onClose(Client *client, int failures)
{
if (!isActive()) {

View file

@ -45,6 +45,7 @@ public:
int64_t submit(const JobResult &result) override;
void connect() override;
void resume() override;
void stop() override;
protected:
void onClose(Client *client, int failures) override;