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