[−][src]Struct solana_core::cluster_info::ClusterInfo
Fields
gossip: RwLock<CrdsGossip>
The network
Methods
impl ClusterInfo
[src]
pub fn new_with_invalid_keypair(contact_info: ContactInfo) -> Self
[src]
Without a valid keypair gossip will not function. Only useful for tests.
pub fn new(contact_info: ContactInfo, keypair: Arc<Keypair>) -> Self
[src]
pub fn clone_with_id(&self, new_id: &Pubkey) -> Self
[src]
pub fn update_contact_info<F>(&self, modify: F) where
F: FnOnce(&mut ContactInfo),
[src]
F: FnOnce(&mut ContactInfo),
pub fn insert_info(&self, contact_info: ContactInfo)
[src]
pub fn set_entrypoint(&self, entrypoint: ContactInfo)
[src]
pub fn id(&self) -> Pubkey
[src]
pub fn lookup_contact_info<F, Y>(&self, id: &Pubkey, map: F) -> Option<Y> where
F: FnOnce(&ContactInfo) -> Y,
[src]
F: FnOnce(&ContactInfo) -> Y,
pub fn my_contact_info(&self) -> ContactInfo
[src]
pub fn my_shred_version(&self) -> u16
[src]
pub fn lookup_epoch_slots(&self, ix: EpochSlotsIndex) -> EpochSlots
[src]
pub fn contact_info_trace(&self) -> String
[src]
pub fn push_lowest_slot(&self, id: Pubkey, min: Slot)
[src]
pub fn push_epoch_slots(&self, update: &[Slot])
[src]
pub fn push_message(&self, message: CrdsValue)
[src]
pub fn push_accounts_hashes(&self, accounts_hashes: Vec<(Slot, Hash)>)
[src]
pub fn push_snapshot_hashes(&self, snapshot_hashes: Vec<(Slot, Hash)>)
[src]
pub fn push_vote(&self, tower_index: usize, vote: Transaction)
[src]
pub fn get_votes(
&self,
since: u64
) -> (Vec<CrdsValueLabel>, Vec<Transaction>, u64)
[src]
&self,
since: u64
) -> (Vec<CrdsValueLabel>, Vec<Transaction>, u64)
Get votes in the crds
-
since - The timestamp of when the vote inserted must be greater than since. This allows the bank to query for new votes only.
-
return - The votes, and the max timestamp from the new set.
pub fn get_snapshot_hash(&self, slot: Slot) -> Vec<(Pubkey, Hash)>
[src]
pub fn get_accounts_hash_for_node<F, Y>(
&self,
pubkey: &Pubkey,
map: F
) -> Option<Y> where
F: FnOnce(&Vec<(Slot, Hash)>) -> Y,
[src]
&self,
pubkey: &Pubkey,
map: F
) -> Option<Y> where
F: FnOnce(&Vec<(Slot, Hash)>) -> Y,
pub fn get_snapshot_hash_for_node<F, Y>(
&self,
pubkey: &Pubkey,
map: F
) -> Option<Y> where
F: FnOnce(&Vec<(Slot, Hash)>) -> Y,
[src]
&self,
pubkey: &Pubkey,
map: F
) -> Option<Y> where
F: FnOnce(&Vec<(Slot, Hash)>) -> Y,
pub fn get_lowest_slot_for_node<F, Y>(
&self,
pubkey: &Pubkey,
since: Option<u64>,
map: F
) -> Option<Y> where
F: FnOnce(&LowestSlot, u64) -> Y,
[src]
&self,
pubkey: &Pubkey,
since: Option<u64>,
map: F
) -> Option<Y> where
F: FnOnce(&LowestSlot, u64) -> Y,
pub fn get_epoch_slots_since(
&self,
since: Option<u64>
) -> (Vec<EpochSlots>, Option<u64>)
[src]
&self,
since: Option<u64>
) -> (Vec<EpochSlots>, Option<u64>)
pub fn all_rpc_peers(&self) -> Vec<ContactInfo>
[src]
all validators that have a valid rpc port regardless of shred_version
.
pub fn gossip_peers(&self) -> Vec<ContactInfo>
[src]
pub fn all_tvu_peers(&self) -> Vec<ContactInfo>
[src]
all validators that have a valid tvu port regardless of shred_version
.
pub fn tvu_peers(&self) -> Vec<ContactInfo>
[src]
all validators that have a valid tvu port and are on the same shred_version
.
pub fn all_storage_peers(&self) -> Vec<ContactInfo>
[src]
all peers that have a valid storage addr regardless of shred_version
.
pub fn storage_peers(&self) -> Vec<ContactInfo>
[src]
all peers that have a valid storage addr and are on the same shred_version
.
pub fn retransmit_peers(&self) -> Vec<ContactInfo>
[src]
all peers that have a valid tvu
pub fn repair_peers(&self, slot: Slot) -> Vec<ContactInfo>
[src]
all tvu peers with valid gossip addrs that likely have the slot being requested
pub fn is_archiver(contact_info: &ContactInfo) -> bool
[src]
pub fn sorted_retransmit_peers_and_stakes(
&self,
stakes: Option<Arc<HashMap<Pubkey, u64>>>
) -> (Vec<ContactInfo>, Vec<(u64, usize)>)
[src]
&self,
stakes: Option<Arc<HashMap<Pubkey, u64>>>
) -> (Vec<ContactInfo>, Vec<(u64, usize)>)
pub fn shuffle_peers_and_index(
id: &Pubkey,
peers: &[ContactInfo],
stakes_and_index: &[(u64, usize)],
seed: [u8; 32]
) -> (usize, Vec<(u64, usize)>)
[src]
id: &Pubkey,
peers: &[ContactInfo],
stakes_and_index: &[(u64, usize)],
seed: [u8; 32]
) -> (usize, Vec<(u64, usize)>)
Return sorted Retransmit peers and index of Self.id()
as if it were in that list
pub fn tpu_peers(&self) -> Vec<ContactInfo>
[src]
compute broadcast table
pub fn describe_data_plane(nodes: usize, fanout: usize) -> (usize, Vec<usize>)
[src]
Given a node count and fanout, it calculates how many layers are needed and at what index each layer begins.
pub fn retransmit_to(
peers: &[&ContactInfo],
packet: &mut Packet,
slot_leader_pubkey: Option<Pubkey>,
s: &UdpSocket,
forwarded: bool
) -> Result<(), Error>
[src]
peers: &[&ContactInfo],
packet: &mut Packet,
slot_leader_pubkey: Option<Pubkey>,
s: &UdpSocket,
forwarded: bool
) -> Result<(), Error>
retransmit messages to a list of nodes
Remarks
We need to avoid having obj locked while doing a io, such as the send_to
pub fn gossip(
obj: Arc<Self>,
bank_forks: Option<Arc<RwLock<BankForks>>>,
sender: PacketSender,
exit: &Arc<AtomicBool>
) -> JoinHandle<()>
[src]
obj: Arc<Self>,
bank_forks: Option<Arc<RwLock<BankForks>>>,
sender: PacketSender,
exit: &Arc<AtomicBool>
) -> JoinHandle<()>
randomly pick a node and ask them for updates asynchronously
pub fn listen(
me: Arc<Self>,
bank_forks: Option<Arc<RwLock<BankForks>>>,
requests_receiver: PacketReceiver,
response_sender: PacketSender,
exit: &Arc<AtomicBool>
) -> JoinHandle<()>
[src]
me: Arc<Self>,
bank_forks: Option<Arc<RwLock<BankForks>>>,
requests_receiver: PacketReceiver,
response_sender: PacketSender,
exit: &Arc<AtomicBool>
) -> JoinHandle<()>
pub fn gossip_contact_info(id: &Pubkey, gossip: SocketAddr) -> ContactInfo
[src]
pub fn spy_contact_info(id: &Pubkey) -> ContactInfo
[src]
pub fn gossip_node(
id: &Pubkey,
gossip_addr: &SocketAddr
) -> (ContactInfo, UdpSocket, Option<TcpListener>)
[src]
id: &Pubkey,
gossip_addr: &SocketAddr
) -> (ContactInfo, UdpSocket, Option<TcpListener>)
An alternative to Spy Node that has a valid gossip address and fully participate in Gossip.
pub fn spy_node(id: &Pubkey) -> (ContactInfo, UdpSocket, Option<TcpListener>)
[src]
A Node with dummy ports to spy on gossip via pull requests
Auto Trait Implementations
impl RefUnwindSafe for ClusterInfo
impl Send for ClusterInfo
impl Sync for ClusterInfo
impl Unpin for ClusterInfo
impl UnwindSafe for ClusterInfo
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Typeable for T where
T: Any,
T: Any,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,