Update members list and send message on update

This commit is contained in:
Sosthene 2025-07-08 11:28:07 +02:00 committed by Nicolas Cantu
parent 0543b6974a
commit 45763102cc

View File

@ -65,12 +65,7 @@ pub(crate) fn handle_commit_request(commit_msg: CommitMessage) -> Result<OutPoin
Ok(commit_msg.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) {
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) {
@ -86,6 +81,7 @@ fn handle_new_process(commit_msg: &CommitMessage) -> Result<Process> {
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(
@ -93,14 +89,25 @@ fn handle_new_process(commit_msg: &CommitMessage) -> Result<Process> {
format!("{}", init_msg.to_string()),
BroadcastType::ToAll,
) {
log::error!("Failed to send handshake message: {}", e);
Err(Error::msg(format!("Failed to send handshake message: {}", e)))
} else {
Ok(())
}
} else {
log::error!(
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) {
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(())