1 /* Copyright (c) 2001 Matej Pfajfar.
2 * Copyright (c) 2001-2004, Roger Dingledine.
3 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
4 * Copyright (c) 2007-2021, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
9 * @brief Header for feature/stats/bwhist.c
12 #ifndef TOR_FEATURE_STATS_BWHIST_H
13 #define TOR_FEATURE_STATS_BWHIST_H
15 void bwhist_init(void);
16 void bwhist_free_all(void);
18 void bwhist_note_bytes_read(uint64_t num_bytes
, time_t when
, bool ipv6
);
19 void bwhist_note_bytes_written(uint64_t num_bytes
, time_t when
, bool ipv6
);
20 void bwhist_note_dir_bytes_read(uint64_t num_bytes
, time_t when
);
21 void bwhist_note_dir_bytes_written(uint64_t num_bytes
, time_t when
);
23 MOCK_DECL(int, bwhist_bandwidth_assess
, (void));
24 char *bwhist_get_bandwidth_lines(void);
26 void bwhist_update_state(struct or_state_t
*state
);
27 int bwhist_load_state(struct or_state_t
*state
, char **err
);
30 typedef struct bw_array_t bw_array_t
;
31 STATIC
uint64_t find_largest_max(bw_array_t
*b
, int min_observation_time
);
32 STATIC
void commit_max(bw_array_t
*b
);
33 STATIC
void advance_obs(bw_array_t
*b
);
34 STATIC bw_array_t
*bw_array_new(void);
35 STATIC
void add_obs(bw_array_t
*b
, time_t when
, uint64_t n
);
36 #define bw_array_free(val) \
37 FREE_AND_NULL(bw_array_t, bw_array_free_, (val))
38 STATIC
void bw_array_free_(bw_array_t
*b
);
39 STATIC
size_t bwhist_fill_bandwidth_history(char *buf
, size_t len
,
41 #endif /* defined(BWHIST_PRIVATE) */
44 extern struct bw_array_t
*write_array
;
47 #endif /* !defined(TOR_FEATURE_STATS_BWHIST_H) */