BitShares-Core  6.1.0
BitShares blockchain implementation and command-line interface software
Classes | Public Member Functions | Public Attributes | List of all members
graphene::net::detail::node_impl Class Reference

#include <node_impl.hxx>

Inheritance diagram for graphene::net::detail::node_impl:
graphene::net::peer_connection_delegate

Classes

class  address_builder
 
struct  item_id_index
 

Public Member Functions

std::shared_ptr< fc::threadget_thread () const
 
 node_impl (const std::string &user_agent)
 
 ~node_impl () override
 
void save_node_configuration ()
 
void p2p_network_connect_loop ()
 
void trigger_p2p_network_connect_loop ()
 
bool have_already_received_sync_item (const item_hash_t &item_hash)
 
void request_sync_item_from_peer (const peer_connection_ptr &peer, const item_hash_t &item_to_request)
 
void request_sync_items_from_peer (const peer_connection_ptr &peer, const std::vector< item_hash_t > &items_to_request)
 
void fetch_sync_items_loop ()
 
void trigger_fetch_sync_items_loop ()
 
bool is_item_in_any_peers_inventory (const item_id &item) const
 
void fetch_items_loop ()
 
void trigger_fetch_items_loop ()
 
void advertise_inventory_loop ()
 
void trigger_advertise_inventory_loop ()
 
void kill_inactive_conns_loop (node_impl_ptr self)
 
void fetch_updated_peer_lists_loop ()
 
void update_bandwidth_data (uint32_t bytes_read_this_second, uint32_t bytes_written_this_second)
 
void bandwidth_monitor_loop ()
 
void dump_node_status_task ()
 
bool is_accepting_new_connections ()
 
bool is_wanting_new_connections ()
 
uint32_t get_number_of_connections ()
 
peer_connection_ptr get_peer_by_node_id (const node_id_t &id) const
 
bool merge_address_info_with_potential_peer_database (const std::vector< address_info > addresses)
 
void display_current_connections ()
 
uint32_t calculate_unsynced_block_count_from_all_peers ()
 
std::vector< item_hash_tcreate_blockchain_synopsis_for_peer (const peer_connection *peer)
 
void fetch_next_batch_of_item_ids_from_peer (peer_connection *peer, bool reset_fork_tracking_data_for_peer=false)
 
fc::variant_object generate_hello_user_data ()
 
void parse_hello_user_data_for_peer (peer_connection *originating_peer, const fc::variant_object &user_data)
 
void on_message (peer_connection *originating_peer, const message &received_message) override
 
void on_hello_message (peer_connection *originating_peer, const hello_message &hello_message_received)
 
void on_connection_accepted_message (peer_connection *originating_peer, const connection_accepted_message &) const
 
void on_connection_rejected_message (peer_connection *originating_peer, const connection_rejected_message &connection_rejected_message_received)
 
void on_address_request_message (peer_connection *originating_peer, const address_request_message &)
 
void on_address_message (peer_connection *originating_peer, const address_message &address_message_received)
 
void on_fetch_blockchain_item_ids_message (peer_connection *originating_peer, const fetch_blockchain_item_ids_message &fetch_blockchain_item_ids_message_received)
 
void on_blockchain_item_ids_inventory_message (peer_connection *originating_peer, const blockchain_item_ids_inventory_message &blockchain_item_ids_inventory_message_received)
 
void on_fetch_items_message (peer_connection *originating_peer, const fetch_items_message &fetch_items_message_received)
 
void on_item_not_available_message (peer_connection *originating_peer, const item_not_available_message &item_not_available_message_received)
 
void on_item_ids_inventory_message (peer_connection *originating_peer, const item_ids_inventory_message &item_ids_inventory_message_received)
 
void on_closing_connection_message (peer_connection *originating_peer, const closing_connection_message &closing_connection_message_received)
 
void on_current_time_request_message (peer_connection *originating_peer, const current_time_request_message &current_time_request_message_received)
 
void on_current_time_reply_message (peer_connection *originating_peer, const current_time_reply_message &current_time_reply_message_received)
 
void on_connection_closed (peer_connection *originating_peer) override
 
void send_sync_block_to_node_delegate (const graphene::net::block_message &block_message_to_send)
 
void process_backlog_of_sync_blocks ()
 
void trigger_process_backlog_of_sync_blocks ()
 
void process_block_during_syncing (peer_connection *originating_peer, const graphene::net::block_message &block_message, const message_hash_type &message_hash)
 
void process_block_when_in_sync (peer_connection *originating_peer, const graphene::net::block_message &block_message, const message_hash_type &message_hash)
 
void process_block_message (peer_connection *originating_peer, const message &message_to_process, const message_hash_type &message_hash)
 
void process_ordinary_message (peer_connection *originating_peer, const message &message_to_process, const message_hash_type &message_hash)
 
void start_synchronizing ()
 
void start_synchronizing_with_peer (const peer_connection_ptr &peer)
 
void new_peer_just_added (const peer_connection_ptr &peer)
 Called after a peer finishes handshaking, kicks off syncing. More...
 
void close ()
 
void accept_connection_task (peer_connection_ptr new_peer)
 
void accept_loop ()
 
void send_hello_message (const peer_connection_ptr &peer)
 
void connect_to_task (peer_connection_ptr new_peer, const fc::ip::endpoint &remote_endpoint)
 
bool is_connected_to_endpoint (const fc::ip::endpoint &remote_endpoint) const
 
void move_peer_to_active_list (const peer_connection_ptr &peer)
 
void move_peer_to_closing_list (const peer_connection_ptr &peer)
 
void move_peer_to_terminating_list (const peer_connection_ptr &peer)
 
peer_connection_ptr get_active_conn_for_endpoint (const fc::ip::endpoint &remote_endpoint) const
 
peer_connection_ptr get_connection_for_endpoint (const fc::ip::endpoint &remote_endpoint) const
 
void dump_node_status ()
 
void delayed_peer_deletion_task ()
 
void schedule_peer_for_deletion (const peer_connection_ptr &peer_to_delete)
 
void disconnect_from_peer (peer_connection *originating_peer, const std::string &reason_for_disconnect, bool caused_by_error=false, const fc::oexception &additional_data=fc::oexception())
 
void set_node_delegate (std::shared_ptr< node_delegate > del, fc::thread *thread_for_delegate_calls)
 
void load_configuration (const fc::path &configuration_directory)
 
void listen_to_p2p_network ()
 
void connect_to_p2p_network (node_impl_ptr self)
 
void add_node (const fc::ip::endpoint &ep)
 
void set_advertise_algorithm (const std::string &algo, const std::vector< std::string > &advertise_or_exclude_list)
 
void add_seed_node (const std::string &seed_string)
 
void resolve_seed_node_and_add (const std::string &seed_string)
 
void initiate_connect_to (const peer_connection_ptr &peer)
 
void connect_to_endpoint (const fc::ip::endpoint &ep)
 
void set_listen_endpoint (const fc::ip::endpoint &ep, bool wait_if_not_available)
 
void set_inbound_endpoint (const fc::ip::endpoint &ep)
 
void set_accept_incoming_connections (bool accept)
 
void set_connect_to_new_peers (bool connect)
 
fc::ip::endpoint get_actual_listening_endpoint () const
 
std::vector< peer_statusget_connected_peers () const
 
uint32_t get_connection_count () const
 
void broadcast (const message &item_to_broadcast, const message_propagation_data &propagation_data)
 
void broadcast (const message &item_to_broadcast)
 
void sync_from (const item_id &current_head_block, const std::vector< uint32_t > &hard_fork_block_numbers)
 
bool is_connected () const
 
std::vector< potential_peer_recordget_potential_peers () const
 
void set_advanced_node_parameters (const fc::variant_object &params)
 
fc::variant_object get_advanced_node_parameters ()
 
message_propagation_data get_tx_propagation_data (const graphene::net::transaction_id_type &transaction_id) const
 
message_propagation_data get_block_propagation_data (const graphene::net::block_id_type &block_id) const
 
node_id_t get_node_id () const
 
void set_allowed_peers (const std::vector< node_id_t > &allowed_peers)
 
void clear_peer_database ()
 
void set_total_bandwidth_limit (uint32_t upload_bytes_per_second, uint32_t download_bytes_per_second)
 
fc::variant_object get_call_statistics () const
 
graphene::net::message get_message_for_item (const item_id &item) override
 
fc::variant_object network_get_info () const
 
fc::variant_object network_get_usage_stats () const
 
bool is_hard_fork_block (uint32_t block_number) const
 
uint32_t get_next_known_hard_fork_block_number (uint32_t block_number) const
 
- Public Member Functions inherited from graphene::net::peer_connection_delegate
virtual ~peer_connection_delegate ()=default
 

Public Attributes

std::shared_ptr< fc::thread_thread = std::make_shared<fc::thread>("p2p")
 
std::unique_ptr< statistics_gathering_node_delegate_wrapper_delegate
 
fc::sha256 _chain_id
 
fc::path _node_configuration_directory
 
node_configuration _node_configuration
 
fc::ip::endpoint _actual_listening_endpoint
 
fc::future< void > _process_backlog_of_sync_blocks_done
 
bool _suspend_fetching_sync_blocks = false
 
fc::future< void > _kill_inactive_conns_loop_done
 
uint8_t _recent_block_interval_seconds = GRAPHENE_MAX_BLOCK_INTERVAL
 A cached copy of the block interval, to avoid a thread hop to the blockchain to get the current value. More...
 
std::string _user_agent_string
 
node_id_t _node_public_key
 
node_id_t _node_id
 
uint32_t _desired_number_of_connections = GRAPHENE_NET_DEFAULT_DESIRED_CONNECTIONS
 
uint32_t _maximum_number_of_connections = GRAPHENE_NET_DEFAULT_MAX_CONNECTIONS
 
uint32_t _peer_connection_retry_timeout = GRAPHENE_NET_DEFAULT_PEER_CONNECTION_RETRY_TIME
 
uint32_t _peer_inactivity_timeout = GRAPHENE_NET_PEER_HANDSHAKE_INACTIVITY_TIMEOUT
 
fc::tcp_server _tcp_server
 
fc::future< void > _accept_loop_complete
 
concurrent_unordered_set< graphene::net::peer_connection_ptr_handshaking_connections
 
concurrent_unordered_set< graphene::net::peer_connection_ptr_active_connections
 
concurrent_unordered_set< graphene::net::peer_connection_ptr_closing_connections
 
concurrent_unordered_set< graphene::net::peer_connection_ptr_terminating_connections
 
boost::circular_buffer< item_hash_t_most_recent_blocks_accepted { _maximum_number_of_connections }
 The /n/ most recent blocks we've accepted (currently tuned to the max number of connections) More...
 
uint32_t _sync_item_type = 0
 
uint32_t _total_num_of_unfetched_items = 0
 The number of items we still need to fetch while syncing. More...
 
std::vector< uint32_t > _hard_fork_block_numbers
 List of all block numbers where there are hard forks. More...
 
blockchain_tied_message_cache _message_cache
 Cache message we have received and might be required to provide to other peers via inventory requests. More...
 
fc::rate_limiting_group _rate_limiter { 0, 0 }
 
uint32_t _last_reported_number_of_conns = 0
 Number of connections last reported to the client (to avoid sending duplicate messages) More...
 
std::shared_ptr< address_builder_address_builder = address_builder::create_default_address_builder()
 
fc::future< void > _fetch_updated_peer_lists_loop_done
 
boost::circular_buffer< uint32_t > _avg_net_read_speed_seconds { 60 }
 Average network read speed in the past seconds. More...
 
boost::circular_buffer< uint32_t > _avg_net_write_speed_seconds { 60 }
 Average network write speed in the past seconds. More...
 
boost::circular_buffer< uint32_t > _avg_net_read_speed_minutes { 60 }
 Average network read speed in the past minutes. More...
 
boost::circular_buffer< uint32_t > _avg_net_write_speed_minutes { 60 }
 Average network write speed in the past minutes. More...
 
boost::circular_buffer< uint32_t > _avg_net_read_speed_hours { 72 }
 Average network read speed in the past hours. More...
 
boost::circular_buffer< uint32_t > _avg_net_write_speed_hours { 72 }
 Average network write speed in the past hours. More...
 
size_t _avg_net_usage_second_counter = 0
 Average network usage second counter. More...
 
size_t _avg_net_usage_minute_counter = 0
 Average network usage minute counter. More...
 
fc::time_point_sec _bandwidth_monitor_last_update_time
 
fc::future< void > _bandwidth_monitor_loop_done
 
fc::future< void > _dump_node_status_task_done
 
bool _node_is_shutting_down = false
 
size_t _max_addrs_to_handle_at_once = MAX_ADDRESSES_TO_HANDLE_AT_ONCE
 Maximum number of addresses to handle at one time. More...
 
size_t _max_blocks_to_handle_at_once = MAX_BLOCKS_TO_HANDLE_AT_ONCE
 Maximum number of blocks to handle at one time. More...
 
size_t _max_sync_blocks_to_prefetch = MAX_SYNC_BLOCKS_TO_PREFETCH
 Maximum number of sync blocks to prefetch. More...
 
size_t _max_sync_blocks_per_peer = GRAPHENE_NET_MAX_BLOCKS_PER_PEER_DURING_SYNCING
 Maximum number of blocks per peer during syncing. More...
 
std::list< fc::future< void > > _handle_message_calls_in_progress
 
std::list< potential_peer_record_add_once_node_list
 
peer_database _potential_peer_db
 
fc::promise< void >::ptr _retrigger_connect_loop_promise
 
bool _potential_peer_db_updated = false
 
fc::future< void > _p2p_network_connect_loop_done
 
fc::promise< void >::ptr _retrigger_advertise_inventory_loop_promise
 
fc::future< void > _advertise_inventory_loop_done
 
concurrent_unordered_set< item_id_new_inventory
 List of items we have received but not yet advertised to our peers. More...
 
std::list< peer_connection_ptr_peers_to_delete
 
fc::future< void > _delayed_peer_deletion_task_done
 
typedef std::unordered_map< graphene::net::block_id_type, fc::time_pointactive_sync_requests_map
 
fc::promise< void >::ptr _retrigger_fetch_sync_items_loop_promise
 
bool _sync_items_to_fetch_updated = false
 
fc::future< void > _fetch_sync_items_loop_done
 
active_sync_requests_map _active_sync_requests
 List of sync blocks we've asked for from peers but have not yet received. More...
 
std::list< graphene::net::block_message_new_received_sync_items
 List of sync blocks we've just received but haven't yet tried to process. More...
 
std::list< graphene::net::block_message_received_sync_items
 
using items_to_fetch_set_type = boost::multi_index_container< prioritized_item_id, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::identity< prioritized_item_id > >, boost::multi_index::hashed_unique< boost::multi_index::tag< item_id_index >, boost::multi_index::member< prioritized_item_id, item_id, &prioritized_item_id::item >, std::hash< item_id > > > >
 
fc::promise< void >::ptr _retrigger_fetch_item_loop_promise
 
bool _items_to_fetch_updated = false
 
fc::future< void > _fetch_item_loop_done
 
size_t _items_to_fetch_seq_counter = 0
 Items to fetch sequence counter. More...
 
items_to_fetch_set_type _items_to_fetch
 List of items we know another peer has and we want. More...
 
peer_connection::timestamped_items_set_type _recently_failed_items
 List of transactions we've recently pushed and had rejected by the delegate. More...
 
boost::container::flat_set< std::string > _seed_nodes
 
fc::future< void > _update_seed_nodes_loop_done
 
void update_seed_nodes_task ()
 
void schedule_next_update_seed_nodes_task ()
 

Detailed Description

Definition at line 410 of file node_impl.hxx.

Member Typedef Documentation

◆ active_sync_requests_map

typedef std::unordered_map<graphene::net::block_id_type, fc::time_point> graphene::net::detail::node_impl::active_sync_requests_map

Definition at line 458 of file node_impl.hxx.

◆ items_to_fetch_set_type

using graphene::net::detail::node_impl::items_to_fetch_set_type = boost::multi_index_container< prioritized_item_id, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::identity<prioritized_item_id> >, boost::multi_index::hashed_unique< boost::multi_index::tag<item_id_index>, boost::multi_index::member<prioritized_item_id, item_id, &prioritized_item_id::item>, std::hash<item_id> > > >

Definition at line 488 of file node_impl.hxx.

Constructor & Destructor Documentation

◆ node_impl()

graphene::net::detail::node_impl::node_impl ( const std::string &  user_agent)
explicit

Definition at line 302 of file node.cpp.

◆ ~node_impl()

graphene::net::detail::node_impl::~node_impl ( )
override

Definition at line 310 of file node.cpp.

Member Function Documentation

◆ accept_connection_task()

void graphene::net::detail::node_impl::accept_connection_task ( peer_connection_ptr  new_peer)

Definition at line 4013 of file node.cpp.

◆ accept_loop()

void graphene::net::detail::node_impl::accept_loop ( )

Definition at line 4020 of file node.cpp.

◆ add_node()

void graphene::net::detail::node_impl::add_node ( const fc::ip::endpoint ep)

Definition at line 4411 of file node.cpp.

◆ add_seed_node()

void graphene::net::detail::node_impl::add_seed_node ( const std::string &  seed_string)

Definition at line 4435 of file node.cpp.

◆ advertise_inventory_loop()

void graphene::net::detail::node_impl::advertise_inventory_loop ( )

Definition at line 767 of file node.cpp.

◆ bandwidth_monitor_loop()

void graphene::net::detail::node_impl::bandwidth_monitor_loop ( )

Definition at line 1165 of file node.cpp.

◆ broadcast() [1/2]

void graphene::net::detail::node_impl::broadcast ( const message item_to_broadcast,
const message_propagation_data propagation_data 
)

Definition at line 4850 of file node.cpp.

◆ broadcast() [2/2]

void graphene::net::detail::node_impl::broadcast ( const message item_to_broadcast)

Definition at line 4873 of file node.cpp.

◆ calculate_unsynced_block_count_from_all_peers()

uint32_t graphene::net::detail::node_impl::calculate_unsynced_block_count_from_all_peers ( )

Definition at line 2230 of file node.cpp.

◆ clear_peer_database()

void graphene::net::detail::node_impl::clear_peer_database ( )

Definition at line 4983 of file node.cpp.

◆ close()

void graphene::net::detail::node_impl::close ( )

Definition at line 3696 of file node.cpp.

◆ connect_to_endpoint()

void graphene::net::detail::node_impl::connect_to_endpoint ( const fc::ip::endpoint ep)

Definition at line 4521 of file node.cpp.

◆ connect_to_p2p_network()

void graphene::net::detail::node_impl::connect_to_p2p_network ( node_impl_ptr  self)

Definition at line 4378 of file node.cpp.

◆ connect_to_task()

void graphene::net::detail::node_impl::connect_to_task ( peer_connection_ptr  new_peer,
const fc::ip::endpoint remote_endpoint 
)

Definition at line 4109 of file node.cpp.

◆ create_blockchain_synopsis_for_peer()

std::vector< item_hash_t > graphene::net::detail::node_impl::create_blockchain_synopsis_for_peer ( const peer_connection peer)

Definition at line 2249 of file node.cpp.

◆ delayed_peer_deletion_task()

void graphene::net::detail::node_impl::delayed_peer_deletion_task ( )

Definition at line 1199 of file node.cpp.

◆ disconnect_from_peer()

void graphene::net::detail::node_impl::disconnect_from_peer ( peer_connection originating_peer,
const std::string &  reason_for_disconnect,
bool  caused_by_error = false,
const fc::oexception additional_data = fc::oexception() 
)

Definition at line 4677 of file node.cpp.

◆ display_current_connections()

void graphene::net::detail::node_impl::display_current_connections ( )

Definition at line 1338 of file node.cpp.

◆ dump_node_status()

void graphene::net::detail::node_impl::dump_node_status ( )

Definition at line 4617 of file node.cpp.

◆ dump_node_status_task()

void graphene::net::detail::node_impl::dump_node_status_task ( )

Definition at line 1189 of file node.cpp.

◆ fetch_items_loop()

void graphene::net::detail::node_impl::fetch_items_loop ( )

Definition at line 630 of file node.cpp.

◆ fetch_next_batch_of_item_ids_from_peer()

void graphene::net::detail::node_impl::fetch_next_batch_of_item_ids_from_peer ( peer_connection peer,
bool  reset_fork_tracking_data_for_peer = false 
)

Definition at line 2300 of file node.cpp.

◆ fetch_sync_items_loop()

void graphene::net::detail::node_impl::fetch_sync_items_loop ( )

Definition at line 541 of file node.cpp.

◆ fetch_updated_peer_lists_loop()

void graphene::net::detail::node_impl::fetch_updated_peer_lists_loop ( )

Definition at line 1095 of file node.cpp.

◆ generate_hello_user_data()

fc::variant_object graphene::net::detail::node_impl::generate_hello_user_data ( )

Definition at line 1454 of file node.cpp.

◆ get_active_conn_for_endpoint()

peer_connection_ptr graphene::net::detail::node_impl::get_active_conn_for_endpoint ( const fc::ip::endpoint remote_endpoint) const

Definition at line 4534 of file node.cpp.

◆ get_actual_listening_endpoint()

fc::ip::endpoint graphene::net::detail::node_impl::get_actual_listening_endpoint ( ) const

Definition at line 4765 of file node.cpp.

◆ get_advanced_node_parameters()

fc::variant_object graphene::net::detail::node_impl::get_advanced_node_parameters ( )

Definition at line 4932 of file node.cpp.

◆ get_block_propagation_data()

message_propagation_data graphene::net::detail::node_impl::get_block_propagation_data ( const graphene::net::block_id_type &  block_id) const

Definition at line 4953 of file node.cpp.

◆ get_call_statistics()

fc::variant_object graphene::net::detail::node_impl::get_call_statistics ( ) const

Definition at line 4996 of file node.cpp.

◆ get_connected_peers()

std::vector< peer_status > graphene::net::detail::node_impl::get_connected_peers ( ) const

Definition at line 4771 of file node.cpp.

◆ get_connection_count()

uint32_t graphene::net::detail::node_impl::get_connection_count ( ) const

Definition at line 4844 of file node.cpp.

◆ get_connection_for_endpoint()

peer_connection_ptr graphene::net::detail::node_impl::get_connection_for_endpoint ( const fc::ip::endpoint remote_endpoint) const

Definition at line 4560 of file node.cpp.

◆ get_message_for_item()

graphene::net::message graphene::net::detail::node_impl::get_message_for_item ( const item_id item)
overridevirtual

Implements graphene::net::peer_connection_delegate.

Definition at line 2630 of file node.cpp.

◆ get_next_known_hard_fork_block_number()

uint32_t graphene::net::detail::node_impl::get_next_known_hard_fork_block_number ( uint32_t  block_number) const

Definition at line 5046 of file node.cpp.

◆ get_node_id()

node_id_t graphene::net::detail::node_impl::get_node_id ( ) const

Definition at line 4960 of file node.cpp.

◆ get_number_of_connections()

uint32_t graphene::net::detail::node_impl::get_number_of_connections ( )

Definition at line 1283 of file node.cpp.

◆ get_peer_by_node_id()

peer_connection_ptr graphene::net::detail::node_impl::get_peer_by_node_id ( const node_id_t id) const

Definition at line 1289 of file node.cpp.

◆ get_potential_peers()

std::vector< potential_peer_record > graphene::net::detail::node_impl::get_potential_peers ( ) const

Definition at line 4896 of file node.cpp.

◆ get_thread()

std::shared_ptr<fc::thread> graphene::net::detail::node_impl::get_thread ( ) const
inline

Definition at line 424 of file node_impl.hxx.

◆ get_tx_propagation_data()

message_propagation_data graphene::net::detail::node_impl::get_tx_propagation_data ( const graphene::net::transaction_id_type &  transaction_id) const

Definition at line 4946 of file node.cpp.

◆ have_already_received_sync_item()

bool graphene::net::detail::node_impl::have_already_received_sync_item ( const item_hash_t item_hash)

Definition at line 507 of file node.cpp.

◆ initiate_connect_to()

void graphene::net::detail::node_impl::initiate_connect_to ( const peer_connection_ptr peer)

Definition at line 4500 of file node.cpp.

◆ is_accepting_new_connections()

bool graphene::net::detail::node_impl::is_accepting_new_connections ( )

Definition at line 1269 of file node.cpp.

◆ is_connected()

bool graphene::net::detail::node_impl::is_connected ( ) const

Definition at line 4890 of file node.cpp.

◆ is_connected_to_endpoint()

bool graphene::net::detail::node_impl::is_connected_to_endpoint ( const fc::ip::endpoint remote_endpoint) const

Definition at line 4584 of file node.cpp.

◆ is_hard_fork_block()

bool graphene::net::detail::node_impl::is_hard_fork_block ( uint32_t  block_number) const

Definition at line 5042 of file node.cpp.

◆ is_item_in_any_peers_inventory()

bool graphene::net::detail::node_impl::is_item_in_any_peers_inventory ( const item_id item) const

Definition at line 619 of file node.cpp.

◆ is_wanting_new_connections()

bool graphene::net::detail::node_impl::is_wanting_new_connections ( )

Definition at line 1276 of file node.cpp.

◆ kill_inactive_conns_loop()

void graphene::net::detail::node_impl::kill_inactive_conns_loop ( node_impl_ptr  self)

Definition at line 858 of file node.cpp.

◆ listen_to_p2p_network()

void graphene::net::detail::node_impl::listen_to_p2p_network ( )

Definition at line 4278 of file node.cpp.

◆ load_configuration()

void graphene::net::detail::node_impl::load_configuration ( const fc::path configuration_directory)

Definition at line 4200 of file node.cpp.

◆ merge_address_info_with_potential_peer_database()

bool graphene::net::detail::node_impl::merge_address_info_with_potential_peer_database ( const std::vector< address_info addresses)

Definition at line 1308 of file node.cpp.

◆ move_peer_to_active_list()

void graphene::net::detail::node_impl::move_peer_to_active_list ( const peer_connection_ptr peer)

Definition at line 4590 of file node.cpp.

◆ move_peer_to_closing_list()

void graphene::net::detail::node_impl::move_peer_to_closing_list ( const peer_connection_ptr peer)

Definition at line 4599 of file node.cpp.

◆ move_peer_to_terminating_list()

void graphene::net::detail::node_impl::move_peer_to_terminating_list ( const peer_connection_ptr peer)

Definition at line 4608 of file node.cpp.

◆ network_get_info()

fc::variant_object graphene::net::detail::node_impl::network_get_info ( ) const

Definition at line 5002 of file node.cpp.

◆ network_get_usage_stats()

fc::variant_object graphene::net::detail::node_impl::network_get_usage_stats ( ) const

Definition at line 5011 of file node.cpp.

◆ new_peer_just_added()

void graphene::net::detail::node_impl::new_peer_just_added ( const peer_connection_ptr peer)

Called after a peer finishes handshaking, kicks off syncing.

Definition at line 3677 of file node.cpp.

◆ on_address_message()

void graphene::net::detail::node_impl::on_address_message ( peer_connection originating_peer,
const address_message address_message_received 
)

Definition at line 2021 of file node.cpp.

◆ on_address_request_message()

void graphene::net::detail::node_impl::on_address_request_message ( peer_connection originating_peer,
const address_request_message  
)

Definition at line 1972 of file node.cpp.

◆ on_blockchain_item_ids_inventory_message()

void graphene::net::detail::node_impl::on_blockchain_item_ids_inventory_message ( peer_connection originating_peer,
const blockchain_item_ids_inventory_message blockchain_item_ids_inventory_message_received 
)

Definition at line 2331 of file node.cpp.

◆ on_closing_connection_message()

void graphene::net::detail::node_impl::on_closing_connection_message ( peer_connection originating_peer,
const closing_connection_message closing_connection_message_received 
)

Definition at line 2849 of file node.cpp.

◆ on_connection_accepted_message()

void graphene::net::detail::node_impl::on_connection_accepted_message ( peer_connection originating_peer,
const connection_accepted_message  
) const

Definition at line 1884 of file node.cpp.

◆ on_connection_closed()

void graphene::net::detail::node_impl::on_connection_closed ( peer_connection originating_peer)
overridevirtual

Implements graphene::net::peer_connection_delegate.

Definition at line 2883 of file node.cpp.

◆ on_connection_rejected_message()

void graphene::net::detail::node_impl::on_connection_rejected_message ( peer_connection originating_peer,
const connection_rejected_message connection_rejected_message_received 
)

Definition at line 1906 of file node.cpp.

◆ on_current_time_reply_message()

void graphene::net::detail::node_impl::on_current_time_reply_message ( peer_connection originating_peer,
const current_time_reply_message current_time_reply_message_received 
)

Definition at line 3555 of file node.cpp.

◆ on_current_time_request_message()

void graphene::net::detail::node_impl::on_current_time_request_message ( peer_connection originating_peer,
const current_time_request_message current_time_request_message_received 
)

Definition at line 3545 of file node.cpp.

◆ on_fetch_blockchain_item_ids_message()

void graphene::net::detail::node_impl::on_fetch_blockchain_item_ids_message ( peer_connection originating_peer,
const fetch_blockchain_item_ids_message fetch_blockchain_item_ids_message_received 
)

Definition at line 2104 of file node.cpp.

◆ on_fetch_items_message()

void graphene::net::detail::node_impl::on_fetch_items_message ( peer_connection originating_peer,
const fetch_items_message fetch_items_message_received 
)

Definition at line 2647 of file node.cpp.

◆ on_hello_message()

void graphene::net::detail::node_impl::on_hello_message ( peer_connection originating_peer,
const hello_message hello_message_received 
)

Definition at line 1513 of file node.cpp.

◆ on_item_ids_inventory_message()

void graphene::net::detail::node_impl::on_item_ids_inventory_message ( peer_connection originating_peer,
const item_ids_inventory_message item_ids_inventory_message_received 
)

Definition at line 2767 of file node.cpp.

◆ on_item_not_available_message()

void graphene::net::detail::node_impl::on_item_not_available_message ( peer_connection originating_peer,
const item_not_available_message item_not_available_message_received 
)

Definition at line 2724 of file node.cpp.

◆ on_message()

void graphene::net::detail::node_impl::on_message ( peer_connection originating_peer,
const message received_message 
)
overridevirtual

Implements graphene::net::peer_connection_delegate.

Definition at line 1369 of file node.cpp.

◆ p2p_network_connect_loop()

void graphene::net::detail::node_impl::p2p_network_connect_loop ( )

Definition at line 359 of file node.cpp.

◆ parse_hello_user_data_for_peer()

void graphene::net::detail::node_impl::parse_hello_user_data_for_peer ( peer_connection originating_peer,
const fc::variant_object user_data 
)

Definition at line 1489 of file node.cpp.

◆ process_backlog_of_sync_blocks()

void graphene::net::detail::node_impl::process_backlog_of_sync_blocks ( )

Definition at line 3136 of file node.cpp.

◆ process_block_during_syncing()

void graphene::net::detail::node_impl::process_block_during_syncing ( peer_connection originating_peer,
const graphene::net::block_message block_message,
const message_hash_type message_hash 
)

Definition at line 3289 of file node.cpp.

◆ process_block_message()

void graphene::net::detail::node_impl::process_block_message ( peer_connection originating_peer,
const message message_to_process,
const message_hash_type message_hash 
)

Definition at line 3464 of file node.cpp.

◆ process_block_when_in_sync()

void graphene::net::detail::node_impl::process_block_when_in_sync ( peer_connection originating_peer,
const graphene::net::block_message block_message,
const message_hash_type message_hash 
)

Definition at line 3302 of file node.cpp.

◆ process_ordinary_message()

void graphene::net::detail::node_impl::process_ordinary_message ( peer_connection originating_peer,
const message message_to_process,
const message_hash_type message_hash 
)

Definition at line 3576 of file node.cpp.

◆ request_sync_item_from_peer()

void graphene::net::detail::node_impl::request_sync_item_from_peer ( const peer_connection_ptr peer,
const item_hash_t item_to_request 
)

Definition at line 516 of file node.cpp.

◆ request_sync_items_from_peer()

void graphene::net::detail::node_impl::request_sync_items_from_peer ( const peer_connection_ptr peer,
const std::vector< item_hash_t > &  items_to_request 
)

Definition at line 527 of file node.cpp.

◆ resolve_seed_node_and_add()

void graphene::net::detail::node_impl::resolve_seed_node_and_add ( const std::string &  seed_string)

Definition at line 4480 of file node.cpp.

◆ save_node_configuration()

void graphene::net::detail::node_impl::save_node_configuration ( )

Definition at line 336 of file node.cpp.

◆ schedule_next_update_seed_nodes_task()

void graphene::net::detail::node_impl::schedule_next_update_seed_nodes_task ( )

Definition at line 490 of file node.cpp.

◆ schedule_peer_for_deletion()

void graphene::net::detail::node_impl::schedule_peer_for_deletion ( const peer_connection_ptr peer_to_delete)

Definition at line 1219 of file node.cpp.

◆ send_hello_message()

void graphene::net::detail::node_impl::send_hello_message ( const peer_connection_ptr peer)

Definition at line 4052 of file node.cpp.

◆ send_sync_block_to_node_delegate()

void graphene::net::detail::node_impl::send_sync_block_to_node_delegate ( const graphene::net::block_message block_message_to_send)

Definition at line 2951 of file node.cpp.

◆ set_accept_incoming_connections()

void graphene::net::detail::node_impl::set_accept_incoming_connections ( bool  accept)

Definition at line 4751 of file node.cpp.

◆ set_advanced_node_parameters()

void graphene::net::detail::node_impl::set_advanced_node_parameters ( const fc::variant_object params)

Definition at line 4906 of file node.cpp.

◆ set_advertise_algorithm()

void graphene::net::detail::node_impl::set_advertise_algorithm ( const std::string &  algo,
const std::vector< std::string > &  advertise_or_exclude_list 
)

Definition at line 2001 of file node.cpp.

◆ set_allowed_peers()

void graphene::net::detail::node_impl::set_allowed_peers ( const std::vector< node_id_t > &  allowed_peers)

Definition at line 4965 of file node.cpp.

◆ set_connect_to_new_peers()

void graphene::net::detail::node_impl::set_connect_to_new_peers ( bool  connect)

Definition at line 4758 of file node.cpp.

◆ set_inbound_endpoint()

void graphene::net::detail::node_impl::set_inbound_endpoint ( const fc::ip::endpoint ep)

Definition at line 4744 of file node.cpp.

◆ set_listen_endpoint()

void graphene::net::detail::node_impl::set_listen_endpoint ( const fc::ip::endpoint ep,
bool  wait_if_not_available 
)

Definition at line 4736 of file node.cpp.

◆ set_node_delegate()

void graphene::net::detail::node_impl::set_node_delegate ( std::shared_ptr< node_delegate del,
fc::thread thread_for_delegate_calls 
)

Definition at line 4190 of file node.cpp.

◆ set_total_bandwidth_limit()

void graphene::net::detail::node_impl::set_total_bandwidth_limit ( uint32_t  upload_bytes_per_second,
uint32_t  download_bytes_per_second 
)

Definition at line 4989 of file node.cpp.

◆ start_synchronizing()

void graphene::net::detail::node_impl::start_synchronizing ( )

Definition at line 3670 of file node.cpp.

◆ start_synchronizing_with_peer()

void graphene::net::detail::node_impl::start_synchronizing_with_peer ( const peer_connection_ptr peer)

Definition at line 3658 of file node.cpp.

◆ sync_from()

void graphene::net::detail::node_impl::sync_from ( const item_id current_head_block,
const std::vector< uint32_t > &  hard_fork_block_numbers 
)

Definition at line 4881 of file node.cpp.

◆ trigger_advertise_inventory_loop()

void graphene::net::detail::node_impl::trigger_advertise_inventory_loop ( )

Definition at line 851 of file node.cpp.

◆ trigger_fetch_items_loop()

void graphene::net::detail::node_impl::trigger_fetch_items_loop ( )

Definition at line 759 of file node.cpp.

◆ trigger_fetch_sync_items_loop()

void graphene::net::detail::node_impl::trigger_fetch_sync_items_loop ( )

Definition at line 610 of file node.cpp.

◆ trigger_p2p_network_connect_loop()

void graphene::net::detail::node_impl::trigger_p2p_network_connect_loop ( )

Definition at line 458 of file node.cpp.

◆ trigger_process_backlog_of_sync_blocks()

void graphene::net::detail::node_impl::trigger_process_backlog_of_sync_blocks ( )

Definition at line 3281 of file node.cpp.

◆ update_bandwidth_data()

void graphene::net::detail::node_impl::update_bandwidth_data ( uint32_t  bytes_read_this_second,
uint32_t  bytes_written_this_second 
)

Definition at line 1135 of file node.cpp.

◆ update_seed_nodes_task()

void graphene::net::detail::node_impl::update_seed_nodes_task ( )

Definition at line 467 of file node.cpp.

Member Data Documentation

◆ _accept_loop_complete

fc::future<void> graphene::net::detail::node_impl::_accept_loop_complete

Definition at line 536 of file node_impl.hxx.

◆ _active_connections

concurrent_unordered_set<graphene::net::peer_connection_ptr> graphene::net::detail::node_impl::_active_connections

Stores fully established connections we're either syncing with or in normal operation with

Definition at line 542 of file node_impl.hxx.

◆ _active_sync_requests

active_sync_requests_map graphene::net::detail::node_impl::_active_sync_requests

List of sync blocks we've asked for from peers but have not yet received.

Definition at line 461 of file node_impl.hxx.

◆ _actual_listening_endpoint

fc::ip::endpoint graphene::net::detail::node_impl::_actual_listening_endpoint

Stores the endpoint we're listening on. This will be the same as _node_configuration.listen_endpoint, unless that endpoint was already in use. This will be 0.0.0.0:0 if the node is configured to not listen.

Definition at line 439 of file node_impl.hxx.

◆ _add_once_node_list

std::list<potential_peer_record> graphene::net::detail::node_impl::_add_once_node_list

Used by the task that manages connecting to peers

List of peers we want to connect to as soon as possible

Definition at line 444 of file node_impl.hxx.

◆ _address_builder

std::shared_ptr<address_builder> graphene::net::detail::node_impl::_address_builder = address_builder::create_default_address_builder()

Definition at line 567 of file node_impl.hxx.

◆ _advertise_inventory_loop_done

fc::future<void> graphene::net::detail::node_impl::_advertise_inventory_loop_done

Definition at line 500 of file node_impl.hxx.

◆ _avg_net_read_speed_hours

boost::circular_buffer<uint32_t> graphene::net::detail::node_impl::_avg_net_read_speed_hours { 72 }

Average network read speed in the past hours.

Definition at line 580 of file node_impl.hxx.

◆ _avg_net_read_speed_minutes

boost::circular_buffer<uint32_t> graphene::net::detail::node_impl::_avg_net_read_speed_minutes { 60 }

Average network read speed in the past minutes.

Definition at line 576 of file node_impl.hxx.

◆ _avg_net_read_speed_seconds

boost::circular_buffer<uint32_t> graphene::net::detail::node_impl::_avg_net_read_speed_seconds { 60 }

Average network read speed in the past seconds.

Definition at line 572 of file node_impl.hxx.

◆ _avg_net_usage_minute_counter

size_t graphene::net::detail::node_impl::_avg_net_usage_minute_counter = 0

Average network usage minute counter.

Definition at line 586 of file node_impl.hxx.

◆ _avg_net_usage_second_counter

size_t graphene::net::detail::node_impl::_avg_net_usage_second_counter = 0

Average network usage second counter.

Definition at line 584 of file node_impl.hxx.

◆ _avg_net_write_speed_hours

boost::circular_buffer<uint32_t> graphene::net::detail::node_impl::_avg_net_write_speed_hours { 72 }

Average network write speed in the past hours.

Definition at line 582 of file node_impl.hxx.

◆ _avg_net_write_speed_minutes

boost::circular_buffer<uint32_t> graphene::net::detail::node_impl::_avg_net_write_speed_minutes { 60 }

Average network write speed in the past minutes.

Definition at line 578 of file node_impl.hxx.

◆ _avg_net_write_speed_seconds

boost::circular_buffer<uint32_t> graphene::net::detail::node_impl::_avg_net_write_speed_seconds { 60 }

Average network write speed in the past seconds.

Definition at line 574 of file node_impl.hxx.

◆ _bandwidth_monitor_last_update_time

fc::time_point_sec graphene::net::detail::node_impl::_bandwidth_monitor_last_update_time

Definition at line 588 of file node_impl.hxx.

◆ _bandwidth_monitor_loop_done

fc::future<void> graphene::net::detail::node_impl::_bandwidth_monitor_loop_done

Definition at line 589 of file node_impl.hxx.

◆ _chain_id

fc::sha256 graphene::net::detail::node_impl::_chain_id

Definition at line 427 of file node_impl.hxx.

◆ _closing_connections

concurrent_unordered_set<graphene::net::peer_connection_ptr> graphene::net::detail::node_impl::_closing_connections

Stores connections we've closed (sent closing message, not actually closed), but are still waiting for the remote end to close before we delete them

Definition at line 545 of file node_impl.hxx.

◆ _delayed_peer_deletion_task_done

fc::future<void> graphene::net::detail::node_impl::_delayed_peer_deletion_task_done

Definition at line 608 of file node_impl.hxx.

◆ _delegate

std::unique_ptr<statistics_gathering_node_delegate_wrapper> graphene::net::detail::node_impl::_delegate

Definition at line 426 of file node_impl.hxx.

◆ _desired_number_of_connections

uint32_t graphene::net::detail::node_impl::_desired_number_of_connections = GRAPHENE_NET_DEFAULT_DESIRED_CONNECTIONS

If we have less than _desired_number_of_connections, we will try to connect with more nodes

Definition at line 527 of file node_impl.hxx.

◆ _dump_node_status_task_done

fc::future<void> graphene::net::detail::node_impl::_dump_node_status_task_done

Definition at line 591 of file node_impl.hxx.

◆ _fetch_item_loop_done

fc::future<void> graphene::net::detail::node_impl::_fetch_item_loop_done

Definition at line 476 of file node_impl.hxx.

◆ _fetch_sync_items_loop_done

fc::future<void> graphene::net::detail::node_impl::_fetch_sync_items_loop_done

Definition at line 456 of file node_impl.hxx.

◆ _fetch_updated_peer_lists_loop_done

fc::future<void> graphene::net::detail::node_impl::_fetch_updated_peer_lists_loop_done

Definition at line 569 of file node_impl.hxx.

◆ _handle_message_calls_in_progress

std::list<fc::future<void> > graphene::net::detail::node_impl::_handle_message_calls_in_progress

Definition at line 628 of file node_impl.hxx.

◆ _handshaking_connections

concurrent_unordered_set<graphene::net::peer_connection_ptr> graphene::net::detail::node_impl::_handshaking_connections

Stores all connections which have not yet finished key exchange or are still sending initial handshaking messages back and forth (not yet ready to initiate syncing)

Definition at line 540 of file node_impl.hxx.

◆ _hard_fork_block_numbers

std::vector<uint32_t> graphene::net::detail::node_impl::_hard_fork_block_numbers

List of all block numbers where there are hard forks.

Definition at line 557 of file node_impl.hxx.

◆ _items_to_fetch

items_to_fetch_set_type graphene::net::detail::node_impl::_items_to_fetch

List of items we know another peer has and we want.

Definition at line 492 of file node_impl.hxx.

◆ _items_to_fetch_seq_counter

size_t graphene::net::detail::node_impl::_items_to_fetch_seq_counter = 0

Items to fetch sequence counter.

Definition at line 490 of file node_impl.hxx.

◆ _items_to_fetch_updated

bool graphene::net::detail::node_impl::_items_to_fetch_updated = false

Definition at line 475 of file node_impl.hxx.

◆ _kill_inactive_conns_loop_done

fc::future<void> graphene::net::detail::node_impl::_kill_inactive_conns_loop_done

Definition at line 505 of file node_impl.hxx.

◆ _last_reported_number_of_conns

uint32_t graphene::net::detail::node_impl::_last_reported_number_of_conns = 0

Number of connections last reported to the client (to avoid sending duplicate messages)

Definition at line 565 of file node_impl.hxx.

◆ _max_addrs_to_handle_at_once

size_t graphene::net::detail::node_impl::_max_addrs_to_handle_at_once = MAX_ADDRESSES_TO_HANDLE_AT_ONCE

Maximum number of addresses to handle at one time.

Definition at line 620 of file node_impl.hxx.

◆ _max_blocks_to_handle_at_once

size_t graphene::net::detail::node_impl::_max_blocks_to_handle_at_once = MAX_BLOCKS_TO_HANDLE_AT_ONCE

Maximum number of blocks to handle at one time.

Definition at line 622 of file node_impl.hxx.

◆ _max_sync_blocks_per_peer

size_t graphene::net::detail::node_impl::_max_sync_blocks_per_peer = GRAPHENE_NET_MAX_BLOCKS_PER_PEER_DURING_SYNCING

Maximum number of blocks per peer during syncing.

Definition at line 626 of file node_impl.hxx.

◆ _max_sync_blocks_to_prefetch

size_t graphene::net::detail::node_impl::_max_sync_blocks_to_prefetch = MAX_SYNC_BLOCKS_TO_PREFETCH

Maximum number of sync blocks to prefetch.

Definition at line 624 of file node_impl.hxx.

◆ _maximum_number_of_connections

uint32_t graphene::net::detail::node_impl::_maximum_number_of_connections = GRAPHENE_NET_DEFAULT_MAX_CONNECTIONS

If we have _maximum_number_of_connections or more, we will refuse any inbound connections

Definition at line 529 of file node_impl.hxx.

◆ _message_cache

blockchain_tied_message_cache graphene::net::detail::node_impl::_message_cache

Cache message we have received and might be required to provide to other peers via inventory requests.

Definition at line 560 of file node_impl.hxx.

◆ _most_recent_blocks_accepted

boost::circular_buffer<item_hash_t> graphene::net::detail::node_impl::_most_recent_blocks_accepted { _maximum_number_of_connections }

The /n/ most recent blocks we've accepted (currently tuned to the max number of connections)

Definition at line 551 of file node_impl.hxx.

◆ _new_inventory

concurrent_unordered_set<item_id> graphene::net::detail::node_impl::_new_inventory

List of items we have received but not yet advertised to our peers.

Definition at line 502 of file node_impl.hxx.

◆ _new_received_sync_items

std::list<graphene::net::block_message> graphene::net::detail::node_impl::_new_received_sync_items

List of sync blocks we've just received but haven't yet tried to process.

Definition at line 463 of file node_impl.hxx.

◆ _node_configuration

node_configuration graphene::net::detail::node_impl::_node_configuration

Definition at line 432 of file node_impl.hxx.

◆ _node_configuration_directory

fc::path graphene::net::detail::node_impl::_node_configuration_directory

Definition at line 431 of file node_impl.hxx.

◆ _node_id

node_id_t graphene::net::detail::node_impl::_node_id

A random number generated each time the client is launched, used to prevent us from connecting to the same client multiple times (sent in hello messages). Since this was introduced after the hello_message was finalized, this is sent in the user_data field. While this shares the same underlying type as a public key, it is really just a random number.

Definition at line 524 of file node_impl.hxx.

◆ _node_is_shutting_down

bool graphene::net::detail::node_impl::_node_is_shutting_down = false

Set to true when we begin our destructor, used to prevent us from starting new tasks while we're shutting down

Definition at line 617 of file node_impl.hxx.

◆ _node_public_key

node_id_t graphene::net::detail::node_impl::_node_public_key

A key automatically generated when the client is first run, stored in node_config.json. It doesn't really have much of a purpose yet, there was just some thought that we might someday have a use for nodes having a private key (sent in hello messages)

Definition at line 515 of file node_impl.hxx.

◆ _p2p_network_connect_loop_done

fc::future<void> graphene::net::detail::node_impl::_p2p_network_connect_loop_done

Definition at line 449 of file node_impl.hxx.

◆ _peer_connection_retry_timeout

uint32_t graphene::net::detail::node_impl::_peer_connection_retry_timeout = GRAPHENE_NET_DEFAULT_PEER_CONNECTION_RETRY_TIME

Retry connections to peers that have failed or rejected us this often, in seconds

Definition at line 531 of file node_impl.hxx.

◆ _peer_inactivity_timeout

uint32_t graphene::net::detail::node_impl::_peer_inactivity_timeout = GRAPHENE_NET_PEER_HANDSHAKE_INACTIVITY_TIMEOUT

How many seconds of inactivity are permitted before disconnecting a peer

Definition at line 533 of file node_impl.hxx.

◆ _peers_to_delete

std::list<peer_connection_ptr> graphene::net::detail::node_impl::_peers_to_delete

We have two alternate paths through the schedule_peer_for_deletion code – one that uses a mutex to prevent one fiber from adding items to the queue while another is deleting items from it, and one that doesn't. The one that doesn't is simpler and more efficient code, but we're keeping around the version that uses the mutex because it crashes, and this crash probably indicates a bug in our underlying threading code that needs fixing. To produce the bug, define USE_PEERS_TO_DELETE_MUTEX and then connect up to the network and set your desired/max connection counts high

Definition at line 607 of file node_impl.hxx.

◆ _potential_peer_db

peer_database graphene::net::detail::node_impl::_potential_peer_db

Definition at line 446 of file node_impl.hxx.

◆ _potential_peer_db_updated

bool graphene::net::detail::node_impl::_potential_peer_db_updated = false

Definition at line 448 of file node_impl.hxx.

◆ _process_backlog_of_sync_blocks_done

fc::future<void> graphene::net::detail::node_impl::_process_backlog_of_sync_blocks_done

Definition at line 469 of file node_impl.hxx.

◆ _rate_limiter

fc::rate_limiting_group graphene::net::detail::node_impl::_rate_limiter { 0, 0 }

Definition at line 562 of file node_impl.hxx.

◆ _received_sync_items

std::list<graphene::net::block_message> graphene::net::detail::node_impl::_received_sync_items

List of sync blocks we've received, but can't yet process because we are still missing blocks that come earlier in the chain

Definition at line 466 of file node_impl.hxx.

◆ _recent_block_interval_seconds

uint8_t graphene::net::detail::node_impl::_recent_block_interval_seconds = GRAPHENE_MAX_BLOCK_INTERVAL

A cached copy of the block interval, to avoid a thread hop to the blockchain to get the current value.

Definition at line 507 of file node_impl.hxx.

◆ _recently_failed_items

peer_connection::timestamped_items_set_type graphene::net::detail::node_impl::_recently_failed_items

List of transactions we've recently pushed and had rejected by the delegate.

Definition at line 494 of file node_impl.hxx.

◆ _retrigger_advertise_inventory_loop_promise

fc::promise<void>::ptr graphene::net::detail::node_impl::_retrigger_advertise_inventory_loop_promise

Used by the task that advertises inventory during normal operation

Definition at line 499 of file node_impl.hxx.

◆ _retrigger_connect_loop_promise

fc::promise<void>::ptr graphene::net::detail::node_impl::_retrigger_connect_loop_promise

Definition at line 447 of file node_impl.hxx.

◆ _retrigger_fetch_item_loop_promise

fc::promise<void>::ptr graphene::net::detail::node_impl::_retrigger_fetch_item_loop_promise

Used by the task that fetches items during normal operation

Definition at line 474 of file node_impl.hxx.

◆ _retrigger_fetch_sync_items_loop_promise

fc::promise<void>::ptr graphene::net::detail::node_impl::_retrigger_fetch_sync_items_loop_promise

Used by the task that fetches sync items during synchronization

Definition at line 454 of file node_impl.hxx.

◆ _seed_nodes

boost::container::flat_set<std::string> graphene::net::detail::node_impl::_seed_nodes

Used by the task that checks whether addresses of seed nodes have been updated

Definition at line 632 of file node_impl.hxx.

◆ _suspend_fetching_sync_blocks

bool graphene::net::detail::node_impl::_suspend_fetching_sync_blocks = false

Definition at line 470 of file node_impl.hxx.

◆ _sync_item_type

uint32_t graphene::net::detail::node_impl::_sync_item_type = 0

Definition at line 553 of file node_impl.hxx.

◆ _sync_items_to_fetch_updated

bool graphene::net::detail::node_impl::_sync_items_to_fetch_updated = false

Definition at line 455 of file node_impl.hxx.

◆ _tcp_server

fc::tcp_server graphene::net::detail::node_impl::_tcp_server

Definition at line 535 of file node_impl.hxx.

◆ _terminating_connections

concurrent_unordered_set<graphene::net::peer_connection_ptr> graphene::net::detail::node_impl::_terminating_connections

Stores connections we've closed, but are still waiting for the OS to notify us that the socket is really closed

Definition at line 548 of file node_impl.hxx.

◆ _thread

std::shared_ptr<fc::thread> graphene::net::detail::node_impl::_thread = std::make_shared<fc::thread>("p2p")

Definition at line 423 of file node_impl.hxx.

◆ _total_num_of_unfetched_items

uint32_t graphene::net::detail::node_impl::_total_num_of_unfetched_items = 0

The number of items we still need to fetch while syncing.

Definition at line 555 of file node_impl.hxx.

◆ _update_seed_nodes_loop_done

fc::future<void> graphene::net::detail::node_impl::_update_seed_nodes_loop_done

Definition at line 633 of file node_impl.hxx.

◆ _user_agent_string

std::string graphene::net::detail::node_impl::_user_agent_string

Definition at line 509 of file node_impl.hxx.


The documentation for this class was generated from the following files: