Go to the documentation of this file.
17 #ifndef USGOV_c13d19f0c3971de6c878039137bc456aee76c735c59394602b4d3ee39130825d
18 #define USGOV_c13d19f0c3971de6c878039137bc456aee76c735c59394602b4d3ee39130825d
26 #include <unordered_map>
27 #include <unordered_set>
37 #include <condition_variable>
50 namespace us {
namespace gov {
60 using socket::datagram;
61 using namespace std::chrono;
75 struct apps final:map<int,app*> {
77 void dump(
const string& prefix, ostream& os)
const;
98 unordered_map<pubkey_t::hash_t,const diff::hash_t> voters;
102 unordered_map<diff::hash_t,uint64_t>
votes;
104 void dump(
const string& prefix, ostream& os)
const;
108 #ifdef CFG_PERMISSIONED_NETWORK
114 struct sysops_t final:unordered_map<peer_t *,shell> {
121 struct counters_t final {
123 uint32_t computed_right_delta{0};
124 uint32_t diff_applied{0};
125 uint32_t genesis_diff_applied{0};
126 uint32_t diff_discarded_not_in_sequence{0};
127 uint32_t clear_db{0};
128 uint32_t patch_db{0};
129 uint32_t problem_opening_block_file{0};
130 uint32_t problem_reading_block_file{0};
131 uint32_t problem_importing_diff_file{0};
132 uint32_t problem_loading_base_file{0};
133 uint32_t patch_db_ok{0};
135 uint32_t problem_opening_db{0};
136 uint32_t problem_reading_db{0};
137 uint32_t snapshot_create{0};
138 uint32_t error_renaming_db_file{0};
139 uint32_t relay_local_deltas{0};
140 uint32_t created_empty_local_deltas{0};
141 uint32_t created_nonempty_local_deltas{0};
142 uint32_t sent_vote{0};
143 uint32_t recv_vote{0};
144 uint32_t recv_vote_wrong_signature{0};
145 uint32_t relay_vote_success{0};
146 uint32_t relay_vote_fail{0};
147 uint32_t recv_dup_vote{0};
148 uint32_t recv_local_deltas_accepted{0};
149 uint32_t recv_local_deltas_unparseable{0};
150 uint32_t recv_local_deltas_wrong_signature{0};
151 uint32_t recv_local_deltas_duplicate{0};
152 uint32_t lost_evidences{0};
153 uint32_t processed_evidences{0};
154 uint32_t processed_evidences_last_block{0};
155 uint32_t processed_evidences_cur_block{0};
156 void dump(ostream&os)
const;
158 static counters_t counters;
161 struct pools_t final:unordered_map<uint64_t,diff*> {
177 atomic<uint64_t> sum{0};
178 atomic<uint32_t> num{0};
179 atomic<uint32_t> max{0};
195 static constexpr
const char* evt_status_str[evt_num]={
"unknown",
"error",
"wait_arrival",
"calendar",
"mempool",
"consensus",
"settled",
"untracked"};
197 struct ev_track_t final: unordered_map<uint64_t,pair<evt_status_t,string>> {
200 void set_error(uint64_t from, uint64_t to,
const string&err);
209 static void fsinfo(
const string& home,
bool dot, ostream& os);
211 daemon(
const keys&,
const string& home, uint16_t port, uint16_t pport, uint8_t num_edges, uint8_t devices,
int workers,
const vector<
pair<uint32_t,uint16_t>>& seed_nodes,
const string&status_file);
219 void list_apps(
const string& prefix, ostream& os)
const;
229 void fsinfo(
bool dot, ostream& os)
const;
232 void dump(
const string& prefix, ostream& os)
const;
248 bool patch_db(vector<diff::hash_t>& patches)
override;
263 void print_performances(ostream&)
const;
264 void save_dashboard()
const;
265 void write_status(ostream& os)
const;
272 #include <us/api/apitool_generated__c++__protocol_gov_engine_service_handler_headers>
277 ko wait_ready(
const chrono::system_clock::time_point& deadline)
const override;
297 bool sysop_allowed{
false};
298 bool encrypt_protocol{
false};
302 struct silent_t:set<diff::hash_t> {
303 void dump(ostream&os)
const;
@ evt_calendar
Definition: daemon.h:186
mutex mx_dashboard
Definition: daemon.h:322
local_deltas * create_local_deltas(uint64_t id)
Definition: fileattr_t.h:28
bool wait_for_secs_to(const seconds &s, uint64_t block_deadline)
@ evt_mempool
Definition: daemon.h:187
uint64_t last_delta_imported_id
Definition: daemon.h:311
bool process_query(peer_t *c, datagram *d)
auth::app * auth_app
Definition: daemon.h:292
void reset()
Definition: daemon.h:174
void delete_chain(const diff::hash_t &h)
static char block_type(istream &)
pair< evt_status_t, string > track(uint64_t)
Definition: auth_app.h:57
@ evt_error
Definition: daemon.h:184
void dump(const string &prefix, ostream &os) const
unordered_map< diff::hash_t, uint64_t > votes
Definition: daemon.h:102
mutex mx
Definition: daemon.h:117
string home
Definition: daemon.h:288
neuralyzer_t neuralyzer
Definition: daemon.h:309
bool shell_command(int app_id, istream &, ostream &) const
void exec_evidence(const evidence &e) override
int clean_unlisted_files()
mutex mx
Definition: daemon.h:165
void old_chain(const diff::hash_t &h)
Definition: ripemd160.h:38
reg votes_timing
Definition: daemon.h:315
ev_track_t evt
Definition: daemon.h:321
bool ready_for_block_opening(uint64_t) const override
sysops_t sysops
Definition: daemon.h:296
bool add(const pubkey_t::hash_t &, const diff::hash_t &v)
bool snapshot(diff::hash_t &)
mezzanine t
Definition: daemon.h:72
@ evt_unknown
Definition: daemon.h:183
void set_status(uint64_t ts, evt_status_t st)
diff::hash_t old
Definition: daemon.h:93
void list_files(ostream &os) const
string blocksdir
Definition: daemon.h:314
bool process_work(peer_t *p, datagram *d)
unordered_set< pubkey_t::hash_t > voters
Definition: daemon.h:100
networking peerd
Definition: daemon.h:295
void fsinfo(bool dot, ostream &os) const
string save_db(const string &dir) const
daemon * d
Definition: daemon.h:92
void save(const diff &bl) const
void load_db(const string &file)
int query_block(const diff::hash_t &hash) override
string status_file
Definition: daemon.h:320
void list_apps(const string &prefix, ostream &os) const
Definition: datagram.h:44
votes_t votes
Definition: daemon.h:300
id::daemon daemon
Definition: daemon.h:25
void logline(ostream &os) const
keys id
Definition: daemon.h:289
bool process_evidence(evidence *)
bool add(local_deltas *ld, bool create_diff)
chrono::system_clock::time_point running_since
Definition: daemon.h:290
reg local_deltas_timing
Definition: daemon.h:316
void on_block_closure(uint64_t block_closure) override
void files_to_keep(vector< pair< dfs::hash_t, uint32_t >> &) const
bool load_db(const base::hash_t &)
void process(const evidence &)
mutex mx
Definition: daemon.h:205
static bool file_exists(const string &f)
void vote_tip(const diff &b)
void dump(const string &prefix, ostream &os) const
daemon & d
Definition: daemon.h:118
syncd_t syncd
Definition: daemon.h:308
crypto::ec::keys keys
Definition: daemon.h:73
bool ready_for_consensus() const
sysops_t(daemon &d)
Definition: daemon.h:115
void set_error(uint64_t ts, const string &err)
void write_status(const string &line) const
static string get_blocksdir(const string &govhome)
bool process_sysop_request(peer_t *c, datagram *d)
daemon(const daemon &)=delete
void save_db(ostream &os)
void print_map(ostream &os) const
mutex mx
Definition: daemon.h:111
void set_last_delta_imported(const diff::hash_t &, uint64_t id)
@ evt_settled
Definition: daemon.h:189
daemon * d
Definition: daemon.h:68
apps apps_
Definition: daemon.h:291
static string get_fsrootdir(const string &govhome)
bool import_(const diff &b, const diff::hash_t &)
Definition: client.cpp:417
void set_last_delta_imported_(const diff::hash_t &, uint64_t id)
bool get_prev(const diff::hash_t &h, diff::hash_t &prev) const override
@ evt_untracked
Definition: daemon.h:190
void eat_diff(const diff::hash_t &voted_tip, diff *)
bool process_work(peer_t *c, datagram *d)
neuralyzer_t(const neuralyzer_t &)=delete
bool patch_db(vector< diff::hash_t > &patches) override
@ evt_consensus
Definition: daemon.h:188
diff * close(uint64_t id)
void set_status(uint64_t from, uint64_t to, evt_status_t st)
mutex mx_import
Definition: daemon.h:312
void update_peers_state()
Definition: networking.h:32
int clean_orphaned_blocks()
evt_status_t
Definition: daemon.h:182
void register_arrival(uint64_t r)
Definition: daemon.h:169
bgtask b
Definition: daemon.h:66
diff::hash_t get_last_delta_imported() const
void update_dfs_index_delta()
static void fsinfo(const string &home, bool dot, ostream &os)
Definition: evidence_processor.h:29
void wait(const seconds &t) const
ko wait_ready(const chrono::system_clock::time_point &deadline) const override
void dump(const string &prefix, ostream &os) const
@ evt_wait_arrival
Definition: daemon.h:185
bool shell_command(int app_id, istream &, ostream &) const
void watch(ostream &os) const
us::gov::dfs::fileattr_t fileattr_t
Definition: daemon.h:208
daemon(const keys &, const string &home, uint16_t port, uint16_t pport, uint8_t num_edges, uint8_t devices, int workers, const vector< pair< uint32_t, uint16_t >> &seed_nodes, const string &status_file)
Definition: evidence.h:31
void set_error(uint64_t from, uint64_t to, const string &err)
us::gov::sys::app * sys_app
Definition: daemon.h:293
void get_blocks(set< diff::hash_t > &s, const diff::hash_t &h)
void dump(ostream &) const
us::gov::cash::app * cash_app
Definition: daemon.h:294
condition_variable cv_cyc
Definition: daemon.h:287
pools_t pools
Definition: daemon.h:307
void logline(ostream &os) const
diff::hash_t last_delta_imported
Definition: daemon.h:310