MEDIUM: Add helper for task creation for checks

This helper is in preparation for adding a second struct check element
to struct server.

Signed-off-by: Simon Horman <horms@verge.net.au>
This commit is contained in:
Simon Horman 2013-11-25 10:46:32 +09:00 committed by Willy Tarreau
parent f65194a6fa
commit 5c9424258e

View File

@ -1509,6 +1509,32 @@ static struct task *process_chk(struct task *t)
return t;
}
static int start_check_task(struct check *check, int mininter,
int nbcheck, int srvpos)
{
struct task *t;
/* task for the check */
if ((t = task_new()) == NULL) {
Alert("Starting [%s:%s] check: out of memory.\n",
check->server->proxy->id, check->server->id);
return 0;
}
check->task = t;
t->process = process_chk;
t->context = check;
/* check this every ms */
t->expire = tick_add(now_ms,
MS_TO_TICKS(((mininter &&
mininter >= srv_getinter(check)) ?
mininter : srv_getinter(check)) * srvpos / nbcheck));
check->start = now;
task_queue(t);
return 1;
}
/*
* Start health-check.
* Returns 0 if OK, -1 if error, and prints the error in this case.
@ -1569,24 +1595,8 @@ int start_checks() {
if (!(s->state & SRV_CHECKED))
continue;
/* one task for the checks */
if ((t = task_new()) == NULL) {
Alert("Starting [%s:%s] check: out of memory.\n", px->id, s->id);
if (!start_check_task(&s->check, mininter, nbcheck, srvpos))
return -1;
}
s->check.task = t;
t->process = process_chk;
t->context = &s->check;
/* check this every ms */
t->expire = tick_add(now_ms,
MS_TO_TICKS(((mininter &&
mininter >= srv_getinter(&s->check)) ?
mininter : srv_getinter(&s->check)) * srvpos / nbcheck));
s->check.start = now;
task_queue(t);
srvpos++;
}
}