Genericize the rand code.
This commit is contained in:
@@ -102,7 +102,7 @@ int main(int argc, char *argv[]) {
|
|||||||
hex_init();
|
hex_init();
|
||||||
|
|
||||||
peer_init();
|
peer_init();
|
||||||
retry_init();
|
rand_init();
|
||||||
wakeup_init();
|
wakeup_init();
|
||||||
|
|
||||||
send_init();
|
send_init();
|
||||||
@@ -117,7 +117,7 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
peer_loop();
|
peer_loop();
|
||||||
|
|
||||||
retry_cleanup();
|
rand_cleanup();
|
||||||
wakeup_cleanup();
|
wakeup_cleanup();
|
||||||
send_cleanup();
|
send_cleanup();
|
||||||
|
|
||||||
|
|||||||
@@ -218,17 +218,22 @@ void uuid_gen(char *out) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int retry_rand_fd;
|
static int rand_fd;
|
||||||
|
|
||||||
void retry_init() {
|
void rand_init() {
|
||||||
retry_rand_fd = open("/dev/urandom", O_RDONLY);
|
rand_fd = open("/dev/urandom", O_RDONLY);
|
||||||
assert(retry_rand_fd >= 0);
|
assert(rand_fd >= 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void retry_cleanup() {
|
void rand_cleanup() {
|
||||||
assert(!close(retry_rand_fd));
|
assert(!close(rand_fd));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rand_fill(void *value, size_t size) {
|
||||||
|
assert(read(rand_fd, value, size) == size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define RETRY_MIN_MS 2000
|
#define RETRY_MIN_MS 2000
|
||||||
#define RETRY_MAX_MS 64000
|
#define RETRY_MAX_MS 64000
|
||||||
#define RETRY_MULT 2
|
#define RETRY_MULT 2
|
||||||
@@ -240,7 +245,7 @@ uint32_t retry_get_delay_ms(uint32_t prev_delay) {
|
|||||||
|
|
||||||
uint32_t max_jitter = delay / RETRY_MAX_JITTER_DIV;
|
uint32_t max_jitter = delay / RETRY_MAX_JITTER_DIV;
|
||||||
uint32_t jitter;
|
uint32_t jitter;
|
||||||
assert(read(retry_rand_fd, &jitter, sizeof(jitter)) == sizeof(jitter));
|
rand_fill(&jitter, sizeof(jitter));
|
||||||
delay += jitter % max_jitter;
|
delay += jitter % max_jitter;
|
||||||
|
|
||||||
delay = delay > RETRY_MAX_MS ? RETRY_MAX_MS : delay;
|
delay = delay > RETRY_MAX_MS ? RETRY_MAX_MS : delay;
|
||||||
|
|||||||
@@ -93,6 +93,13 @@ void hex_from_int(char *, uint64_t, size_t);
|
|||||||
void uuid_gen(char *);
|
void uuid_gen(char *);
|
||||||
|
|
||||||
|
|
||||||
|
///////// rand
|
||||||
|
|
||||||
|
void rand_init();
|
||||||
|
void rand_cleanup();
|
||||||
|
void rand_fill(void *, size_t);
|
||||||
|
|
||||||
|
|
||||||
///////// retry timing
|
///////// retry timing
|
||||||
|
|
||||||
void retry_init();
|
void retry_init();
|
||||||
|
|||||||
Reference in New Issue
Block a user