mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Add a 'consensus cache' type on top of storagedir.
Every file in the cache is labeled. The labels are held in memory; the bodies are mapped on demand.
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
/* Copyright (c) 2017, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
#ifndef TOR_CONSCACHE_H
|
||||
#define TOR_CONSCACHE_H
|
||||
|
||||
typedef struct consensus_cache_entry_t consensus_cache_entry_t;
|
||||
typedef struct consensus_cache_t consensus_cache_t;
|
||||
|
||||
consensus_cache_t *consensus_cache_open(const char *subdir, int max_entries);
|
||||
void consensus_cache_free(consensus_cache_t *cache);
|
||||
void consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff);
|
||||
void consensus_cache_delete_pending(consensus_cache_t *cache);
|
||||
consensus_cache_entry_t *consensus_cache_add(consensus_cache_t *cache,
|
||||
const config_line_t *labels,
|
||||
const uint8_t *data,
|
||||
size_t datalen);
|
||||
|
||||
consensus_cache_entry_t *consensus_cache_find_first(
|
||||
consensus_cache_t *cache,
|
||||
const char *key,
|
||||
const char *value);
|
||||
|
||||
void consensus_cache_find_all(smartlist_t *out,
|
||||
consensus_cache_t *cache,
|
||||
const char *key,
|
||||
const char *value);
|
||||
void consensus_cache_filter_list(smartlist_t *lst,
|
||||
const char *key,
|
||||
const char *value);
|
||||
|
||||
const char *consensus_cache_entry_get_value(const consensus_cache_entry_t *ent,
|
||||
const char *key);
|
||||
const config_line_t *consensus_cache_entry_get_labels(
|
||||
const consensus_cache_entry_t *ent);
|
||||
|
||||
void consensus_cache_entry_incref(consensus_cache_entry_t *ent);
|
||||
void consensus_cache_entry_decref(consensus_cache_entry_t *ent);
|
||||
|
||||
void consensus_cache_entry_mark_for_removal(consensus_cache_entry_t *ent);
|
||||
void consensus_cache_entry_mark_for_aggressive_release(
|
||||
consensus_cache_entry_t *ent);
|
||||
int consensus_cache_entry_get_body(const consensus_cache_entry_t *ent,
|
||||
const uint8_t **body_out,
|
||||
size_t *sz_out);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user