Move retry delay calculation into wakeup, since it's only used there.

This commit is contained in:
Ian Gulliver
2016-02-22 16:33:00 -08:00
parent d6a629fa7e
commit 21536eee33
6 changed files with 16 additions and 23 deletions

View File

@@ -11,6 +11,7 @@
#include <sys/epoll.h>
#include "common.h"
#include "rand.h"
#include "wakeup.h"
@@ -83,3 +84,15 @@ void wakeup_add(struct peer *peer, uint32_t delay_ms) {
head = entry;
}
}
#define RETRY_MIN_MS 2000
#define RETRY_MAX_MS 60000
uint32_t wakeup_get_retry_delay_ms(uint32_t attempt) {
uint32_t max_delay = RETRY_MIN_MS * (1 << attempt);
max_delay = max_delay > RETRY_MAX_MS ? RETRY_MAX_MS : max_delay;
uint32_t jitter;
rand_fill(&jitter, sizeof(jitter));
return jitter % max_delay;
}