File: pools.h

package info (click to toggle)
entropybroker 2.9-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,600 kB
  • sloc: cpp: 14,386; sh: 934; makefile: 188; java: 148; perl: 12
file content (49 lines) | stat: -rw-r--r-- 1,915 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#define MIN_SLEEP 0.0001

class pools
{
private:
	std::vector<pool *> pool_vector;
	std::vector<std::pair<std::string, int> > cache_list;
	std::string cache_dir;
	unsigned int max_n_mem_pools;
	unsigned int max_n_disk_pools;
	unsigned int min_store_on_disk_n;
	bool disk_limit_reached_notified;
	bit_count_estimator *bce;
	int new_pool_size;

	pthread_rwlock_t list_lck;
	bool is_w_locked;

	unsigned int last_added_to;
	pthread_mutex_t lat_lck;

	void list_wlock();
	void list_wunlock();
	void list_rlock();
	void list_runlock();

	void load_cachefiles_list();
	bool load_caches(unsigned int load_n_bits, pool_crypto *pc);
	void store_caches(unsigned int keep_n);
	int select_pool_to_add_to(bool timed, double max_time, pool_crypto *pc);
	int find_non_full_pool(bool timed, double max_duration);
	void flush_empty_pools();
	void merge_pools(pool_crypto *pc);
	bool verify_quality(unsigned char *data, int n, bool ignore_rngtest_fips140, fips140 *pfips, bool ignore_rngtest_scc, scc *pscc);
	int get_bit_sum_unlocked(double max_duration);

public:
	pools(std::string cache_dir, unsigned int max_n_mem_pools, unsigned int max_n_disk_pools, unsigned int min_store_on_disk_n, bit_count_estimator *bce_in, int new_pool_size_in_bytes);
	~pools();

	int get_bits_from_pools(int n_bits_requested, unsigned char **buffer, bool allow_prng, bool ignore_rngtest_fips140, fips140 *pfips, bool ignore_rngtest_scc, scc *pscc, double max_duration, pool_crypto *pc);
	int add_bits_to_pools(unsigned char *data, int n_bytes, bool ignore_rngtest_fips140, fips140 *prt, bool ignore_rngtest_scc, scc *pscc, double max_duration, pool_crypto *pc);
	int get_bit_sum(double max_duration);
	int add_event(long double event, unsigned char *event_data, int n_event_data, double max_time, pool_crypto *pc);
	bool all_pools_full(double max_duration);
	int get_memory_pool_count();
	int get_disk_pool_count();
	int get_disk_pool_bit_count();
};