]> arthur.barton.de Git - netdata.git/blob - src/registry_internals.h
ab-debian 0.20170311.01-0ab1, upstream v1.5.0-573-g0fba967b
[netdata.git] / src / registry_internals.h
1 #include "common.h"
2
3 #ifndef NETDATA_REGISTRY_INTERNALS_H_H
4 #define NETDATA_REGISTRY_INTERNALS_H_H
5
6 #define REGISTRY_URL_FLAGS_DEFAULT 0x00
7 #define REGISTRY_URL_FLAGS_EXPIRED 0x01
8
9 #define DICTIONARY_FLAGS DICTIONARY_FLAG_VALUE_LINK_DONT_CLONE | DICTIONARY_FLAG_NAME_LINK_DONT_CLONE | DICTIONARY_FLAG_SINGLE_THREADED
10
11 // ----------------------------------------------------------------------------
12 // COMMON structures
13
14 struct registry {
15     int enabled;
16
17     // entries counters / statistics
18     unsigned long long persons_count;
19     unsigned long long machines_count;
20     unsigned long long usages_count;
21     unsigned long long urls_count;
22     unsigned long long persons_urls_count;
23     unsigned long long machines_urls_count;
24     unsigned long long log_count;
25
26     // memory counters / statistics
27     unsigned long long persons_memory;
28     unsigned long long machines_memory;
29     unsigned long long urls_memory;
30     unsigned long long persons_urls_memory;
31     unsigned long long machines_urls_memory;
32
33     // configuration
34     unsigned long long save_registry_every_entries;
35     char *registry_domain;
36     char *hostname;
37     char *registry_to_announce;
38     time_t persons_expiration; // seconds to expire idle persons
39     int verify_cookies_redirects;
40
41     size_t max_url_length;
42     size_t max_name_length;
43
44     // file/path names
45     char *pathname;
46     char *db_filename;
47     char *log_filename;
48     char *machine_guid_filename;
49
50     // open files
51     FILE *log_fp;
52
53     // the database
54     DICTIONARY *persons;    // dictionary of REGISTRY_PERSON *,  with key the REGISTRY_PERSON.guid
55     DICTIONARY *machines;   // dictionary of REGISTRY_MACHINE *, with key the REGISTRY_MACHINE.guid
56
57     avl_tree registry_urls_root_index;
58
59     pthread_mutex_t lock;
60 };
61
62 extern int regenerate_guid(const char *guid, char *result);
63
64 #include "registry_url.h"
65 #include "registry_machine.h"
66 #include "registry_person.h"
67 #include "registry.h"
68
69 extern struct registry registry;
70
71 // REGISTRY LOW-LEVEL REQUESTS (in registry-internals.c)
72 extern REGISTRY_PERSON *registry_request_access(char *person_guid, char *machine_guid, char *url, char *name, time_t when);
73 extern REGISTRY_PERSON *registry_request_delete(char *person_guid, char *machine_guid, char *url, char *delete_url, time_t when);
74 extern REGISTRY_MACHINE *registry_request_machine(char *person_guid, char *machine_guid, char *url, char *request_machine, time_t when);
75
76 // REGISTRY LOG (in registry_log.c)
77 extern void registry_log(const char action, REGISTRY_PERSON *p, REGISTRY_MACHINE *m, REGISTRY_URL *u, char *name);
78 extern int registry_log_open(void);
79 extern void registry_log_close(void);
80 extern void registry_log_recreate(void);
81 extern ssize_t registry_log_load(void);
82
83 // REGISTRY DB (in registry_db.c)
84 extern int registry_db_save(void);
85 extern size_t registry_db_load(void);
86 extern int registry_db_should_be_saved(void);
87
88 #endif //NETDATA_REGISTRY_INTERNALS_H_H