Update members list and send message on update
This commit is contained in:
parent
0543b6974a
commit
45763102cc
@ -65,42 +65,49 @@ pub(crate) fn handle_commit_request(commit_msg: CommitMessage) -> Result<OutPoin
|
||||
Ok(commit_msg.process_id)
|
||||
}
|
||||
|
||||
fn send_members_update(pairing_process_id: OutPoint) -> Result<()> {
|
||||
dump_cached_members()?;
|
||||
// Send a handshake message to every connected client
|
||||
if let Some(new_member) = lock_members().unwrap().get(&pairing_process_id) {
|
||||
let our_sp_address = WALLET
|
||||
.get()
|
||||
.ok_or(Error::msg("Wallet not initialized"))?
|
||||
.lock_anyhow()?
|
||||
.get_sp_client()
|
||||
.get_receiving_address();
|
||||
let mut new_member_map = HashMap::new();
|
||||
new_member_map.insert(pairing_process_id, new_member.clone());
|
||||
let init_msg = HandshakeMessage::new(
|
||||
our_sp_address.into(),
|
||||
OutPointMemberMap(new_member_map),
|
||||
OutPointProcessMap(HashMap::new()),
|
||||
CHAIN_TIP.load(std::sync::atomic::Ordering::SeqCst).into(),
|
||||
);
|
||||
|
||||
if let Err(e) = broadcast_message(
|
||||
AnkFlag::Handshake,
|
||||
format!("{}", init_msg.to_string()),
|
||||
BroadcastType::ToAll,
|
||||
) {
|
||||
Err(Error::msg(format!("Failed to send handshake message: {}", e)))
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
} else {
|
||||
Err(Error::msg(format!(
|
||||
"Failed to find new member with process id {}",
|
||||
pairing_process_id
|
||||
)))
|
||||
}
|
||||
}
|
||||
|
||||
fn handle_new_process(commit_msg: &CommitMessage) -> Result<Process> {
|
||||
let pcd_commitment = &commit_msg.pcd_commitment;
|
||||
|
||||
let merkle_root_bin = pcd_commitment.create_merkle_tree()?.root().unwrap();
|
||||
|
||||
if let Ok(pairing_process_id) = handle_member_list(&commit_msg) {
|
||||
dump_cached_members()?;
|
||||
// Send a handshake message to every connected client
|
||||
if let Some(new_member) = lock_members().unwrap().get(&pairing_process_id) {
|
||||
let our_sp_address = WALLET
|
||||
.get()
|
||||
.ok_or(Error::msg("Wallet not initialized"))?
|
||||
.lock_anyhow()?
|
||||
.get_sp_client()
|
||||
.get_receiving_address();
|
||||
let mut new_member_map = HashMap::new();
|
||||
new_member_map.insert(pairing_process_id, new_member.clone());
|
||||
let init_msg = HandshakeMessage::new(
|
||||
our_sp_address.into(),
|
||||
OutPointMemberMap(new_member_map),
|
||||
OutPointProcessMap(HashMap::new()),
|
||||
);
|
||||
|
||||
if let Err(e) = broadcast_message(
|
||||
AnkFlag::Handshake,
|
||||
format!("{}", init_msg.to_string()),
|
||||
BroadcastType::ToAll,
|
||||
) {
|
||||
log::error!("Failed to send handshake message: {}", e);
|
||||
}
|
||||
} else {
|
||||
log::error!(
|
||||
"Failed to find new member with process id {}",
|
||||
pairing_process_id
|
||||
);
|
||||
}
|
||||
send_members_update(pairing_process_id)?;
|
||||
}
|
||||
|
||||
let mut new_process = Process::new(commit_msg.process_id);
|
||||
@ -173,6 +180,11 @@ fn handle_existing_commitment(
|
||||
);
|
||||
// If the validation succeed, we return a new tip
|
||||
process_validation(process_to_udpate, commit_msg)?;
|
||||
|
||||
if let Ok(pairing_process_id) = handle_member_list(commit_msg) {
|
||||
debug_assert_eq!(pairing_process_id, process_id);
|
||||
send_members_update(process_id)?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
Loading…
x
Reference in New Issue
Block a user