TARAXA
Loading...
Searching...
No Matches
network.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <json/json.h>
4
5#include <string>
6
7#include "common/types.hpp"
8#include "libp2p/Common.h"
9
10namespace taraxa {
11
13 std::string address;
14 uint16_t listen_port = 0;
15 uint16_t polling_interval_ms = 1000;
16};
17
19 std::optional<uint16_t> http_port;
20 std::optional<uint16_t> ws_port;
21 boost::asio::ip::address address;
22
23 // Number of threads dedicated to the rpc calls processing, default = 5
24 uint16_t threads_num{2};
25
26 void validate() const;
27};
28
29void dec_json(const Json::Value &json, ConnectionConfig &config);
30
31struct NodeConfig {
32 std::string id;
33 std::string ip;
34 uint16_t port = 0;
35};
36
38 // How many periods(of votes) into the future compared to the current state we accept
40 // How many rounds(of votes) into the future compared to the current state we accept
42 // How many steps(of votes) into the future compared to the current state we accept
44
45 // Time period for collecting packets stats
46 std::chrono::milliseconds packets_stats_time_period_ms{60000};
47 // Log packets stats flag
48 bool log_packets_stats = false;
49 // Peer's max allowed packets processing time during packets_stats_time_period_ms
50 std::chrono::microseconds peer_max_packets_processing_time_us{0};
51 // Queue size limit when we start dropping packets from peers if they exceed peer_max_packets_processing_time_us
53
54 // Max packets queue size, 0 means unlimited
56
57 // Time of allowed queue over the limit
58 std::chrono::milliseconds queue_limit_time{5000};
59
60 // Time period between disconnecting peers
61 std::chrono::milliseconds peer_disconnect_interval{5000};
62
63 void validate(uint32_t delegation_delay) const;
64};
65
67 static constexpr uint16_t kBlacklistTimeoutDefaultInSeconds = 600;
68
69 std::string json_file_name;
70 std::string public_ip;
71 std::string listen_ip = "127.0.0.1";
72 uint16_t listen_port = 0;
73 std::vector<NodeConfig> boot_nodes;
74 uint16_t ideal_peer_count = 10;
75 uint16_t max_peer_count = 50;
77 uint16_t sync_level_size = 10;
78 uint16_t num_threads = std::max(uint(1), uint(std::thread::hardware_concurrency() / 2));
84 std::unordered_set<dev::p2p::NodeID> trusted_nodes;
85
86 std::optional<ConnectionConfig> rpc;
87 std::optional<ConnectionConfig> graphql;
88 std::optional<PrometheusConfig> prometheus;
89
90 void validate(uint32_t delegation_delay) const;
91};
92
93void dec_json(const Json::Value &json, NetworkConfig &network);
94
95} // namespace taraxa
Definition app.hpp:16
uint16_t port
Definition network.hpp:34
uint32_t PbftStep
Definition types.hpp:26
std::string id
Definition network.hpp:32
void dec_json(Json::Value const &json, DBConfig &db_config)
Definition config.cpp:12
uint32_t PbftRound
Definition types.hpp:25
EthBlockNumber PbftPeriod
Definition types.hpp:24
uint16_t polling_interval_ms
Definition network.hpp:15
std::string address
Definition network.hpp:13
uint16_t listen_port
Definition network.hpp:14
std::string ip
Definition network.hpp:33
Definition network.hpp:31
Definition network.hpp:12
Definition network.hpp:18
boost::asio::ip::address address
Definition network.hpp:21
uint16_t threads_num
Definition network.hpp:24
void validate() const
Definition network.cpp:13
std::optional< uint16_t > http_port
Definition network.hpp:19
std::optional< uint16_t > ws_port
Definition network.hpp:20
Definition network.hpp:37
std::chrono::milliseconds queue_limit_time
Definition network.hpp:58
std::chrono::milliseconds packets_stats_time_period_ms
Definition network.hpp:46
std::chrono::milliseconds peer_disconnect_interval
Definition network.hpp:61
uint64_t peer_max_packets_queue_size_limit
Definition network.hpp:52
uint64_t max_packets_queue_size
Definition network.hpp:55
bool log_packets_stats
Definition network.hpp:48
PbftRound vote_accepting_rounds
Definition network.hpp:41
PbftPeriod vote_accepting_periods
Definition network.hpp:39
PbftStep vote_accepting_steps
Definition network.hpp:43
std::chrono::microseconds peer_max_packets_processing_time_us
Definition network.hpp:50
void validate(uint32_t delegation_delay) const
Definition network.cpp:42
Definition network.hpp:66
std::optional< ConnectionConfig > rpc
Definition network.hpp:86
std::optional< PrometheusConfig > prometheus
Definition network.hpp:88
uint16_t ideal_peer_count
Definition network.hpp:74
uint16_t listen_port
Definition network.hpp:72
uint16_t peer_blacklist_timeout
Definition network.hpp:80
DdosProtectionConfig ddos_protection
Definition network.hpp:83
uint16_t max_peer_count
Definition network.hpp:75
static constexpr uint16_t kBlacklistTimeoutDefaultInSeconds
Definition network.hpp:67
std::vector< NodeConfig > boot_nodes
Definition network.hpp:73
uint16_t deep_syncing_threshold
Definition network.hpp:82
uint16_t packets_processing_threads
Definition network.hpp:79
std::string listen_ip
Definition network.hpp:71
std::string json_file_name
Definition network.hpp:69
uint16_t transaction_interval_ms
Definition network.hpp:76
void validate(uint32_t delegation_delay) const
Definition network.cpp:79
std::string public_ip
Definition network.hpp:70
std::unordered_set< dev::p2p::NodeID > trusted_nodes
Definition network.hpp:84
uint16_t sync_level_size
Definition network.hpp:77
std::optional< ConnectionConfig > graphql
Definition network.hpp:87
bool disable_peer_blacklist
Definition network.hpp:81
uint16_t num_threads
Definition network.hpp:78