blob: 8e8931b74374542ba9b4865252a0818e8111f758 [file] [log] [blame]
/*
* Copyright (C) Igor Sysoev
* Copyright (C) NGINX, Inc.
*/
#ifndef _NJS_RANDOM_H_INCLUDED_
#define _NJS_RANDOM_H_INCLUDED_
typedef struct {
int32_t count;
njs_pid_t pid;
uint8_t i;
uint8_t j;
uint8_t s[256];
} njs_random_t;
/*
* The njs_random_t structure must be either initialized with zeros
* or initialized by njs_random_init() function. The later is intended
* mainly for unit test. njs_random() automatically stirs itself if
* process pid changed after fork(). This pid testing can be disabled by
* passing -1 as the pid argument to njs_random_init() or njs_random_stir()
* functions. The testing can be later enabled by passing any positive
* number, for example, a real pid number.
*/
NJS_EXPORT void njs_random_init(njs_random_t *r, njs_pid_t pid);
NJS_EXPORT void njs_random_stir(njs_random_t *r, njs_pid_t pid);
NJS_EXPORT void njs_random_add(njs_random_t *r, const u_char *key,
uint32_t len);
NJS_EXPORT uint32_t njs_random(njs_random_t *r);
#endif /* _NJS_RANDOM_H_INCLUDED_ */