X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=src%2Frrd.h;h=2b872ed7dccacb6b312fd4cbbe17622303f44834;hb=cf1597811865739b265c00e91d1a1c661ff8e880;hp=8c6259890da9807fdc23e38adb63acb65cd09ca0;hpb=73212e3a8731012fee476e373f4a5b647f5126e5;p=netdata.git diff --git a/src/rrd.h b/src/rrd.h index 8c625989..2b872ed7 100644 --- a/src/rrd.h +++ b/src/rrd.h @@ -339,6 +339,22 @@ typedef struct rrdset RRDSET; for(st = host->rrdset_root, rrdhost_check_wrlock(host); st ; st = st->next) +// ---------------------------------------------------------------------------- +// RRDHOST flags +// use this for configuration flags, not for state control +// flags are set/unset in a manner that is not thread safe +// and may lead to missing information. + +typedef enum rrdhost_flags { + RRDHOST_ORPHAN = 1 << 0, // this host is orphan + RRDHOST_DELETE_OBSOLETE_FILES = 1 << 1, // delete files of obsolete charts + RRDHOST_DELETE_ORPHAN_FILES = 1 << 2 // delete the entire host when orphan +} RRDHOST_FLAGS; + +#define rrdhost_flag_check(host, flag) ((host)->flags & flag) +#define rrdhost_flag_set(host, flag) (host)->flags |= flag +#define rrdhost_flag_clear(host, flag) (host)->flags &= ~flag + // ---------------------------------------------------------------------------- // RRD HOST @@ -355,6 +371,9 @@ struct rrdhost { uint32_t hash_machine_guid; // the hash of the unique ID char *os; // the O/S type of the host + + uint32_t flags; // flags about this RRDHOST + int rrd_update_every; // the update frequency of the host int rrd_history_entries; // the number of history entries for the host's charts RRD_MEMORY_MODE rrd_memory_mode; // the memory more for the charts of this host @@ -524,9 +543,10 @@ extern RRDSET *rrdset_create(RRDHOST *host extern void rrdhost_free_all(void); extern void rrdhost_save_all(void); -extern void rrdhost_cleanup_remote_stale(RRDHOST *protected); +extern void rrdhost_cleanup_orphan(RRDHOST *protected); extern void rrdhost_free(RRDHOST *host); extern void rrdhost_save(RRDHOST *host); +extern void rrdhost_delete(RRDHOST *host); extern RRDSET *rrdset_find(RRDHOST *host, const char *id); #define rrdset_find_localhost(id) rrdset_find(localhost, id) @@ -601,14 +621,11 @@ extern long align_entries_to_pagesize(RRD_MEMORY_MODE mode, long entries); #ifdef NETDATA_RRD_INTERNALS -extern void rrdset_free(RRDSET *st); extern avl_tree_lock rrdhost_root_index; extern char *rrdset_strncpyz_name(char *to, const char *from, size_t length); extern char *rrdset_cache_dir(RRDHOST *host, const char *id, const char *config_section); -extern void rrdset_reset(RRDSET *st); - extern void rrddim_free(RRDSET *st, RRDDIM *rd); extern int rrddim_compare(void* a, void* b); @@ -623,8 +640,12 @@ extern void rrdfamily_free(RRDHOST *host, RRDFAMILY *rc); #define rrdset_index_del(host, st) (RRDSET *)avl_remove_lock(&((host)->rrdset_root_index), (avl *)(st)) extern RRDSET *rrdset_index_del_name(RRDHOST *host, RRDSET *st); +extern void rrdset_free(RRDSET *st); +extern void rrdset_reset(RRDSET *st); extern void rrdset_save(RRDSET *st); -extern void rrdhost_cleanup(RRDHOST *host); +extern void rrdset_delete(RRDSET *st); + +extern void rrdhost_cleanup_obsolete(RRDHOST *host); #endif /* NETDATA_RRD_INTERNALS */