/* SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include #include "kr_cache_gc.h" int kr_gc_cache_open(const char *cache_path, struct kr_cache *kres_db, knot_db_t ** libknot_db); /** A wrapper around kr_cdb_api::check_health that keeps libknot_db up to date. * \return zero or negative error code. */ int kr_gc_cache_check_health(struct kr_cache *kres_db, knot_db_t ** libknot_db); void kr_gc_cache_close(struct kr_cache *kres_db, knot_db_t * knot_db); typedef int (*kr_gc_iter_callback)(const knot_db_val_t * key, gc_record_info_t * info, void *ctx); int kr_gc_cache_iter(knot_db_t * knot_db, const kr_cache_gc_cfg_t *cfg, kr_gc_iter_callback callback, void *ctx); /** Return RR type corresponding to the key or negative error code. * * Error is returned on unexpected values (those also trigger assertion) * and on other kinds of data in cache (e.g. struct rtt_state). */ int kr_gc_key_consistent(knot_db_val_t key); /** Printf a *binary* string in a human-readable way. */ void debug_printbin(const char *str, unsigned int len); /** Block run in --verbose mode; optimized when not run. */ #define VERBOSE_STATUS __builtin_expect(KR_LOG_LEVEL_IS(LOG_DEBUG), false) /* TODO: replace when solving GC logging properly */