Monero
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
nodetool::peerlist_manager Class Reference

#include <net_peerlist.h>

Classes

struct  by_addr
 
struct  by_id
 
struct  by_time
 
struct  modify_all
 
struct  modify_all_but_id
 
struct  modify_last_seen
 

Public Member Functions

bool init (bool allow_local_ip)
 
bool deinit ()
 
size_t get_white_peers_count ()
 
size_t get_gray_peers_count ()
 
bool merge_peerlist (const std::list< peerlist_entry > &outer_bs)
 
bool get_peerlist_head (std::list< peerlist_entry > &bs_head, uint32_t depth=P2P_DEFAULT_PEERS_IN_HANDSHAKE)
 
bool get_peerlist_full (std::list< peerlist_entry > &pl_gray, std::list< peerlist_entry > &pl_white)
 
bool get_white_peer_by_index (peerlist_entry &p, size_t i)
 
bool get_gray_peer_by_index (peerlist_entry &p, size_t i)
 
bool append_with_peer_white (const peerlist_entry &pr)
 
bool append_with_peer_gray (const peerlist_entry &pr)
 
bool append_with_peer_anchor (const anchor_peerlist_entry &ple)
 
bool set_peer_just_seen (peerid_type peer, const epee::net_utils::network_address &addr)
 
bool set_peer_unreachable (const peerlist_entry &pr)
 
bool is_host_allowed (const epee::net_utils::network_address &address)
 
bool get_random_gray_peer (peerlist_entry &pe)
 
bool remove_from_peer_gray (const peerlist_entry &pe)
 
bool get_and_empty_anchor_peerlist (std::vector< anchor_peerlist_entry > &apl)
 
bool remove_from_peer_anchor (const epee::net_utils::network_address &addr)
 
template<class Archive , class List , class Element , class t_version_type >
void serialize_peers (Archive &a, List &list, Element ple, const t_version_type ver)
 
template<class Archive , class t_version_type >
void serialize (Archive &a, const t_version_type ver)
 

Private Types

typedef boost::multi_index_container< peerlist_entry, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< by_addr >, boost::multi_index::member< peerlist_entry, epee::net_utils::network_address,&peerlist_entry::adr > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< by_time >, boost::multi_index::member< peerlist_entry, int64_t,&peerlist_entry::last_seen > > > > peers_indexed
 
typedef boost::multi_index_container< peerlist_entry, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< by_id >, boost::multi_index::member< peerlist_entry, uint64_t,&peerlist_entry::id > >, boost::multi_index::ordered_unique< boost::multi_index::tag< by_addr >, boost::multi_index::member< peerlist_entry, epee::net_utils::network_address,&peerlist_entry::adr > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< by_time >, boost::multi_index::member< peerlist_entry, int64_t,&peerlist_entry::last_seen > > > > peers_indexed_old
 
typedef boost::multi_index_container< anchor_peerlist_entry, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< by_addr >, boost::multi_index::member< anchor_peerlist_entry, epee::net_utils::network_address,&anchor_peerlist_entry::adr > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< by_time >, boost::multi_index::member< anchor_peerlist_entry, int64_t,&anchor_peerlist_entry::first_seen > > > > anchor_peers_indexed
 

Private Member Functions

bool peers_indexed_from_old (const peers_indexed_old &pio, peers_indexed &pi)
 
void trim_white_peerlist ()
 
void trim_gray_peerlist ()
 

Private Attributes

epee::critical_section m_peerlist_lock
 
std::string m_config_folder
 
bool m_allow_local_ip
 
peers_indexed m_peers_gray
 
peers_indexed m_peers_white
 
anchor_peers_indexed m_peers_anchor
 

Friends

class boost::serialization::access
 

Member Typedef Documentation

◆ anchor_peers_indexed

typedef boost::multi_index_container< anchor_peerlist_entry, boost::multi_index::indexed_by< boost::multi_index::ordered_unique<boost::multi_index::tag<by_addr>, boost::multi_index::member<anchor_peerlist_entry,epee::net_utils::network_address,&anchor_peerlist_entry::adr> >, boost::multi_index::ordered_non_unique<boost::multi_index::tag<by_time>, boost::multi_index::member<anchor_peerlist_entry,int64_t,&anchor_peerlist_entry::first_seen> > > > nodetool::peerlist_manager::anchor_peers_indexed
private

◆ peers_indexed

typedef boost::multi_index_container< peerlist_entry, boost::multi_index::indexed_by< boost::multi_index::ordered_unique<boost::multi_index::tag<by_addr>, boost::multi_index::member<peerlist_entry,epee::net_utils::network_address,&peerlist_entry::adr> >, boost::multi_index::ordered_non_unique<boost::multi_index::tag<by_time>, boost::multi_index::member<peerlist_entry,int64_t,&peerlist_entry::last_seen> > > > nodetool::peerlist_manager::peers_indexed
private

◆ peers_indexed_old

typedef boost::multi_index_container< peerlist_entry, boost::multi_index::indexed_by< boost::multi_index::ordered_unique<boost::multi_index::tag<by_id>, boost::multi_index::member<peerlist_entry,uint64_t,&peerlist_entry::id> >, boost::multi_index::ordered_unique<boost::multi_index::tag<by_addr>, boost::multi_index::member<peerlist_entry,epee::net_utils::network_address,&peerlist_entry::adr> >, boost::multi_index::ordered_non_unique<boost::multi_index::tag<by_time>, boost::multi_index::member<peerlist_entry,int64_t,&peerlist_entry::last_seen> > > > nodetool::peerlist_manager::peers_indexed_old
private

Member Function Documentation

◆ append_with_peer_anchor()

bool nodetool::peerlist_manager::append_with_peer_anchor ( const anchor_peerlist_entry ple)
inline

◆ append_with_peer_gray()

bool nodetool::peerlist_manager::append_with_peer_gray ( const peerlist_entry pr)
inline

◆ append_with_peer_white()

bool nodetool::peerlist_manager::append_with_peer_white ( const peerlist_entry pr)
inline

◆ deinit()

bool nodetool::peerlist_manager::deinit ( )
inline

◆ get_and_empty_anchor_peerlist()

bool nodetool::peerlist_manager::get_and_empty_anchor_peerlist ( std::vector< anchor_peerlist_entry > &  apl)
inline

◆ get_gray_peer_by_index()

bool nodetool::peerlist_manager::get_gray_peer_by_index ( peerlist_entry p,
size_t  i 
)
inline

◆ get_gray_peers_count()

size_t nodetool::peerlist_manager::get_gray_peers_count ( )
inline

◆ get_peerlist_full()

bool nodetool::peerlist_manager::get_peerlist_full ( std::list< peerlist_entry > &  pl_gray,
std::list< peerlist_entry > &  pl_white 
)
inline

◆ get_peerlist_head()

bool nodetool::peerlist_manager::get_peerlist_head ( std::list< peerlist_entry > &  bs_head,
uint32_t  depth = P2P_DEFAULT_PEERS_IN_HANDSHAKE 
)
inline

◆ get_random_gray_peer()

bool nodetool::peerlist_manager::get_random_gray_peer ( peerlist_entry pe)
inline

◆ get_white_peer_by_index()

bool nodetool::peerlist_manager::get_white_peer_by_index ( peerlist_entry p,
size_t  i 
)
inline

◆ get_white_peers_count()

size_t nodetool::peerlist_manager::get_white_peers_count ( )
inline

◆ init()

bool nodetool::peerlist_manager::init ( bool  allow_local_ip)
inline

◆ is_host_allowed()

bool nodetool::peerlist_manager::is_host_allowed ( const epee::net_utils::network_address &  address)
inline

◆ merge_peerlist()

bool nodetool::peerlist_manager::merge_peerlist ( const std::list< peerlist_entry > &  outer_bs)
inline

◆ peers_indexed_from_old()

bool nodetool::peerlist_manager::peers_indexed_from_old ( const peers_indexed_old pio,
peers_indexed pi 
)
inlineprivate

◆ remove_from_peer_anchor()

bool nodetool::peerlist_manager::remove_from_peer_anchor ( const epee::net_utils::network_address &  addr)
inline

◆ remove_from_peer_gray()

bool nodetool::peerlist_manager::remove_from_peer_gray ( const peerlist_entry pe)
inline

◆ serialize()

template<class Archive , class t_version_type >
void nodetool::peerlist_manager::serialize ( Archive &  a,
const t_version_type  ver 
)
inline

◆ serialize_peers()

template<class Archive , class List , class Element , class t_version_type >
void nodetool::peerlist_manager::serialize_peers ( Archive &  a,
List &  list,
Element  ple,
const t_version_type  ver 
)
inline

◆ set_peer_just_seen()

bool nodetool::peerlist_manager::set_peer_just_seen ( peerid_type  peer,
const epee::net_utils::network_address &  addr 
)
inline

◆ set_peer_unreachable()

bool nodetool::peerlist_manager::set_peer_unreachable ( const peerlist_entry pr)

◆ trim_gray_peerlist()

void nodetool::peerlist_manager::trim_gray_peerlist ( )
inlineprivate

◆ trim_white_peerlist()

void nodetool::peerlist_manager::trim_white_peerlist ( )
inlineprivate

Friends And Related Function Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

Member Data Documentation

◆ m_allow_local_ip

bool nodetool::peerlist_manager::m_allow_local_ip
private

◆ m_config_folder

std::string nodetool::peerlist_manager::m_config_folder
private

◆ m_peerlist_lock

epee::critical_section nodetool::peerlist_manager::m_peerlist_lock
private

◆ m_peers_anchor

anchor_peers_indexed nodetool::peerlist_manager::m_peers_anchor
private

◆ m_peers_gray

peers_indexed nodetool::peerlist_manager::m_peers_gray
private

◆ m_peers_white

peers_indexed nodetool::peerlist_manager::m_peers_white
private

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