mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-26 23:52:30 +01:00
We previously used FILENAME_PRIVATE identifiers mostly for identifiers exposed only to the unit tests... but also for identifiers exposed to the benchmarker, and sometimes for identifiers exposed to a similar module, and occasionally for no really good reason at all. Now, we use FILENAME_PRIVATE identifiers for identifiers shared by Tor and the unit tests. They should be defined static when we aren't building the unit test, and globally visible otherwise. (The STATIC macro will keep us honest here.) For identifiers used only by the unit tests and never by Tor at all, on the other hand, we wrap them in #ifdef TOR_UNIT_TESTS. This is not the motivating use case for the split test/non-test build system; it's just a test example to see how it works, and to take a chance to clean up the code a little.
54 lines
1.8 KiB
C
54 lines
1.8 KiB
C
/* Copyright (c) 2001 Matej Pfajfar.
|
|
* Copyright (c) 2001-2004, Roger Dingledine.
|
|
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
|
|
* Copyright (c) 2007-2013, The Tor Project, Inc. */
|
|
/* See LICENSE for licensing information */
|
|
|
|
/**
|
|
* \file hibernate.h
|
|
* \brief Header file for hibernate.c.
|
|
**/
|
|
|
|
#ifndef TOR_HIBERNATE_H
|
|
#define TOR_HIBERNATE_H
|
|
|
|
int accounting_parse_options(const or_options_t *options, int validate_only);
|
|
int accounting_is_enabled(const or_options_t *options);
|
|
int accounting_get_interval_length(void);
|
|
void configure_accounting(time_t now);
|
|
void accounting_run_housekeeping(time_t now);
|
|
void accounting_add_bytes(size_t n_read, size_t n_written, int seconds);
|
|
int accounting_record_bandwidth_usage(time_t now, or_state_t *state);
|
|
void hibernate_begin_shutdown(void);
|
|
int we_are_hibernating(void);
|
|
void consider_hibernation(time_t now);
|
|
int getinfo_helper_accounting(control_connection_t *conn,
|
|
const char *question, char **answer,
|
|
const char **errmsg);
|
|
|
|
#ifdef HIBERNATE_PRIVATE
|
|
/** Possible values of hibernate_state */
|
|
typedef enum {
|
|
/** We are running normally. */
|
|
HIBERNATE_STATE_LIVE=1,
|
|
/** We're trying to shut down cleanly, and we'll kill all active connections
|
|
* at shutdown_time. */
|
|
HIBERNATE_STATE_EXITING=2,
|
|
/** We're running low on allocated bandwidth for this period, so we won't
|
|
* accept any new connections. */
|
|
HIBERNATE_STATE_LOWBANDWIDTH=3,
|
|
/** We are hibernating, and we won't wake up till there's more bandwidth to
|
|
* use. */
|
|
HIBERNATE_STATE_DORMANT=4,
|
|
/** We start out in state default, which means we havent decided which state
|
|
* we're in. */
|
|
HIBERNATE_STATE_INITIAL=5
|
|
} hibernate_state_t;
|
|
|
|
#ifdef TOR_UNIT_TESTS
|
|
void hibernate_set_state_for_testing_(hibernate_state_t newstate);
|
|
#endif
|
|
#endif
|
|
|
|
#endif
|
|
|