Implement vote rebroadcaster config serde (#4886)
This commit is contained in:
parent
c0b39ec44f
commit
3894dbc289
3 changed files with 40 additions and 1 deletions
|
|
@ -279,6 +279,10 @@ nano::error nano::node_config::serialize_toml (nano::tomlconfig & toml) const
|
|||
fork_cache.serialize (fork_cache_l);
|
||||
toml.put_child ("fork_cache", fork_cache_l);
|
||||
|
||||
nano::tomlconfig vote_rebroadcaster_l;
|
||||
vote_rebroadcaster.serialize (vote_rebroadcaster_l);
|
||||
toml.put_child ("vote_rebroadcaster", vote_rebroadcaster_l);
|
||||
|
||||
return toml.get_error ();
|
||||
}
|
||||
|
||||
|
|
@ -442,6 +446,12 @@ nano::error nano::node_config::deserialize_toml (nano::tomlconfig & toml)
|
|||
fork_cache.deserialize (config_l);
|
||||
}
|
||||
|
||||
if (toml.has_key ("vote_rebroadcaster"))
|
||||
{
|
||||
auto config_l = toml.get_required_child ("vote_rebroadcaster");
|
||||
vote_rebroadcaster.deserialize (config_l);
|
||||
}
|
||||
|
||||
/*
|
||||
* Values
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -456,4 +456,32 @@ size_t nano::vote_rebroadcaster_index::total_hashes () const
|
|||
return std::accumulate (index.begin (), index.end (), size_t{ 0 }, [] (auto total, auto const & entry) {
|
||||
return total + entry.hashes.size ();
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* vote_rebroadcaster_config
|
||||
*/
|
||||
|
||||
nano::error nano::vote_rebroadcaster_config::deserialize (nano::tomlconfig & toml)
|
||||
{
|
||||
toml.get ("enable", enable);
|
||||
toml.get ("max_queue", max_queue);
|
||||
toml.get ("max_history", max_history);
|
||||
toml.get ("max_representatives", max_representatives);
|
||||
toml.get_duration ("rebroadcast_threshold", rebroadcast_threshold);
|
||||
toml.get ("priority_coefficient", priority_coefficient);
|
||||
|
||||
return toml.get_error ();
|
||||
}
|
||||
|
||||
nano::error nano::vote_rebroadcaster_config::serialize (nano::tomlconfig & toml) const
|
||||
{
|
||||
toml.put ("enable", enable, "Enable or disable vote rebroadcasting. Disabling it will reduce bandwidth usage but should be done with understanding that the node will not participate fully in network consensus.\ntype:bool");
|
||||
toml.put ("max_queue", max_queue, "Maximum number of votes to keep in queue for processing.\ntype:uint64");
|
||||
toml.put ("max_history", max_history, "Maximum number of recently broadcast hashes to keep per representative.\ntype:uint64");
|
||||
toml.put ("max_representatives", max_representatives, "Maximum number of representatives to track rebroadcasts for.\ntype:uint64");
|
||||
toml.put ("rebroadcast_threshold", rebroadcast_threshold.count (), "Minimum amount of time between rebroadcasts for the same hash from the same representative.\ntype:milliseconds");
|
||||
toml.put ("priority_coefficient", priority_coefficient, "Priority coefficient for prioritizing votes from representative tiers.\ntype:uint64");
|
||||
|
||||
return toml.get_error ();
|
||||
}
|
||||
|
|
@ -28,7 +28,8 @@ namespace nano
|
|||
class vote_rebroadcaster_config final
|
||||
{
|
||||
public:
|
||||
// TODO: Serde
|
||||
nano::error deserialize (nano::tomlconfig &);
|
||||
nano::error serialize (nano::tomlconfig &) const;
|
||||
|
||||
public:
|
||||
bool enable{ true };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue