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 std::string toString() const;
36};
37
39 // How many periods(of votes) into the future compared to the current state we accept
41 // How many rounds(of votes) into the future compared to the current state we accept
43 // How many steps(of votes) into the future compared to the current state we accept
45
46 // Time period for collecting packets stats
47 std::chrono::milliseconds packets_stats_time_period_ms{60000};
48 // Log packets stats flag
49 bool log_packets_stats = false;
50 // Peer's max allowed packets processing time during packets_stats_time_period_ms
51 std::chrono::microseconds peer_max_packets_processing_time_us{0};
52 // Queue size limit when we start dropping packets from peers if they exceed peer_max_packets_processing_time_us
54
55 // Max packets queue size, 0 means unlimited
57
58 // Time of allowed queue over the limit
59 std::chrono::milliseconds queue_limit_time{5000};
60
61 // Time period between disconnecting peers
62 std::chrono::milliseconds peer_disconnect_interval{5000};
63
64 void validate(uint32_t delegation_delay) const;
65 std::string toString() const;
66};
67
69 static constexpr uint16_t kBlacklistTimeoutDefaultInSeconds = 600;
70
71 std::string json_file_name;
72 std::string public_ip;
73 std::string listen_ip = "127.0.0.1";
74 uint16_t listen_port = 0;
75 std::vector<NodeConfig> boot_nodes;
76 uint16_t ideal_peer_count = 10;
77 uint16_t max_peer_count = 50;
79 uint16_t sync_level_size = 10;
80 uint16_t num_threads = std::max(uint(1), uint(std::thread::hardware_concurrency() / 2));
86 std::unordered_set<dev::p2p::NodeID> trusted_nodes;
87
88 std::optional<ConnectionConfig> rpc;
89 std::optional<ConnectionConfig> graphql;
90 std::optional<PrometheusConfig> prometheus;
91
92 void validate(uint32_t delegation_delay) const;
93 std::string toString() const;
94};
95
96void dec_json(const Json::Value &json, NetworkConfig &network);
97
98} // namespace taraxa
Definition app.hpp:16
uint32_t PbftStep
Definition types.hpp:27
void dec_json(Json::Value const &json, DBConfig &db_config)
Definition config.cpp:12
uint32_t PbftRound
Definition types.hpp:26
EthBlockNumber PbftPeriod
Definition types.hpp:25
uint16_t polling_interval_ms
Definition network.hpp:15
std::string address
Definition network.hpp:13
uint16_t listen_port
Definition network.hpp:14
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:38
std::chrono::milliseconds queue_limit_time
Definition network.hpp:59
std::chrono::milliseconds packets_stats_time_period_ms
Definition network.hpp:47
std::chrono::milliseconds peer_disconnect_interval
Definition network.hpp:62
uint64_t peer_max_packets_queue_size_limit
Definition network.hpp:53
std::string toString() const
Definition config.cpp:151
uint64_t max_packets_queue_size
Definition network.hpp:56
bool log_packets_stats
Definition network.hpp:49
PbftRound vote_accepting_rounds
Definition network.hpp:42
PbftPeriod vote_accepting_periods
Definition network.hpp:40
PbftStep vote_accepting_steps
Definition network.hpp:44
std::chrono::microseconds peer_max_packets_processing_time_us
Definition network.hpp:51
void validate(uint32_t delegation_delay) const
Definition network.cpp:42
Definition network.hpp:68
std::optional< ConnectionConfig > rpc
Definition network.hpp:88
std::optional< PrometheusConfig > prometheus
Definition network.hpp:90
uint16_t ideal_peer_count
Definition network.hpp:76
uint16_t listen_port
Definition network.hpp:74
uint16_t peer_blacklist_timeout
Definition network.hpp:82
DdosProtectionConfig ddos_protection
Definition network.hpp:85
uint16_t max_peer_count
Definition network.hpp:77
static constexpr uint16_t kBlacklistTimeoutDefaultInSeconds
Definition network.hpp:69
std::vector< NodeConfig > boot_nodes
Definition network.hpp:75
uint16_t deep_syncing_threshold
Definition network.hpp:84
uint16_t packets_processing_threads
Definition network.hpp:81
std::string listen_ip
Definition network.hpp:73
std::string json_file_name
Definition network.hpp:71
uint16_t transaction_interval_ms
Definition network.hpp:78
void validate(uint32_t delegation_delay) const
Definition network.cpp:79
std::string public_ip
Definition network.hpp:72
std::unordered_set< dev::p2p::NodeID > trusted_nodes
Definition network.hpp:86
std::string toString() const
Definition config.cpp:165
uint16_t sync_level_size
Definition network.hpp:79
std::optional< ConnectionConfig > graphql
Definition network.hpp:89
bool disable_peer_blacklist
Definition network.hpp:83
uint16_t num_threads
Definition network.hpp:80
Definition network.hpp:31
uint16_t port
Definition network.hpp:34
std::string toString() const
Definition config.cpp:142
std::string id
Definition network.hpp:32
std::string ip
Definition network.hpp:33