mirror of
https://github.com/GOSTSec/sgminer
synced 2025-02-05 11:34:16 +00:00
Provide rudimentary support for the balancing failover strategies with stratum and GBT by switching pools silently on getwork requests.
This commit is contained in:
parent
40a3331e72
commit
aa72db369e
15
cgminer.c
15
cgminer.c
@ -1844,12 +1844,12 @@ static void curses_print_status(void)
|
|||||||
global_queued(), total_staged(), total_stale, total_discarded, new_blocks,
|
global_queued(), total_staged(), total_stale, total_discarded, new_blocks,
|
||||||
local_work, total_go, total_ro, total_diff1 / total_secs * 60);
|
local_work, total_go, total_ro, total_diff1 / total_secs * 60);
|
||||||
wclrtoeol(statuswin);
|
wclrtoeol(statuswin);
|
||||||
if (pool->has_stratum) {
|
if ((pool_strategy == POOL_LOADBALANCE || pool_strategy == POOL_BALANCE) && total_pools > 1) {
|
||||||
mvwprintw(statuswin, 4, 0, " Connected to %s with stratum as user %s",
|
|
||||||
pool->sockaddr_url, pool->rpc_user);
|
|
||||||
} else if ((pool_strategy == POOL_LOADBALANCE || pool_strategy == POOL_BALANCE) && total_pools > 1) {
|
|
||||||
mvwprintw(statuswin, 4, 0, " Connected to multiple pools with%s LP",
|
mvwprintw(statuswin, 4, 0, " Connected to multiple pools with%s LP",
|
||||||
have_longpoll ? "": "out");
|
have_longpoll ? "": "out");
|
||||||
|
} else if (pool->has_stratum) {
|
||||||
|
mvwprintw(statuswin, 4, 0, " Connected to %s with stratum as user %s",
|
||||||
|
pool->sockaddr_url, pool->rpc_user);
|
||||||
} else {
|
} else {
|
||||||
mvwprintw(statuswin, 4, 0, " Connected to %s with%s %s as user %s",
|
mvwprintw(statuswin, 4, 0, " Connected to %s with%s %s as user %s",
|
||||||
pool->sockaddr_url, have_longpoll ? "": "out",
|
pool->sockaddr_url, have_longpoll ? "": "out",
|
||||||
@ -3388,12 +3388,15 @@ void switch_pools(struct pool *selected)
|
|||||||
if (opt_fail_only)
|
if (opt_fail_only)
|
||||||
pool_tset(pool, &pool->lagging);
|
pool_tset(pool, &pool->lagging);
|
||||||
|
|
||||||
if (pool != last_pool)
|
if (pool != last_pool && pool_strategy != POOL_LOADBALANCE && pool_strategy != POOL_BALANCE)
|
||||||
applog(LOG_WARNING, "Switching to %s", pool->rpc_url);
|
applog(LOG_WARNING, "Switching to %s", pool->rpc_url);
|
||||||
|
|
||||||
mutex_lock(&lp_lock);
|
mutex_lock(&lp_lock);
|
||||||
pthread_cond_broadcast(&lp_cond);
|
pthread_cond_broadcast(&lp_cond);
|
||||||
mutex_unlock(&lp_lock);
|
mutex_unlock(&lp_lock);
|
||||||
|
|
||||||
|
if (!pool->queued)
|
||||||
|
queue_request();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void discard_work(struct work *work)
|
static void discard_work(struct work *work)
|
||||||
@ -5230,6 +5233,8 @@ static void get_work(struct work *work, struct thr_info *thr, const int thr_id)
|
|||||||
/* Reset these flags in case we switch pools with these work structs */
|
/* Reset these flags in case we switch pools with these work structs */
|
||||||
work->stratum = work->gbt = false;
|
work->stratum = work->gbt = false;
|
||||||
retry:
|
retry:
|
||||||
|
if (pool_strategy == POOL_BALANCE || pool_strategy == POOL_LOADBALANCE)
|
||||||
|
switch_pools(NULL);
|
||||||
pool = current_pool();
|
pool = current_pool();
|
||||||
|
|
||||||
if (reuse_work(work, pool))
|
if (reuse_work(work, pool))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user