Update members list and send message on update
This commit is contained in:
parent
c3a58ed020
commit
220e520e01
@ -65,12 +65,7 @@ pub(crate) fn handle_commit_request(commit_msg: CommitMessage) -> Result<OutPoin
|
|||||||
Ok(commit_msg.process_id)
|
Ok(commit_msg.process_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_new_process(commit_msg: &CommitMessage) -> Result<Process> {
|
fn send_members_update(pairing_process_id: OutPoint) -> Result<()> {
|
||||||
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()?;
|
dump_cached_members()?;
|
||||||
// Send a handshake message to every connected client
|
// Send a handshake message to every connected client
|
||||||
if let Some(new_member) = lock_members().unwrap().get(&pairing_process_id) {
|
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(),
|
our_sp_address.into(),
|
||||||
OutPointMemberMap(new_member_map),
|
OutPointMemberMap(new_member_map),
|
||||||
OutPointProcessMap(HashMap::new()),
|
OutPointProcessMap(HashMap::new()),
|
||||||
|
CHAIN_TIP.load(std::sync::atomic::Ordering::SeqCst).into(),
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Err(e) = broadcast_message(
|
if let Err(e) = broadcast_message(
|
||||||
@ -93,16 +89,27 @@ fn handle_new_process(commit_msg: &CommitMessage) -> Result<Process> {
|
|||||||
format!("{}", init_msg.to_string()),
|
format!("{}", init_msg.to_string()),
|
||||||
BroadcastType::ToAll,
|
BroadcastType::ToAll,
|
||||||
) {
|
) {
|
||||||
log::error!("Failed to send handshake message: {}", e);
|
Err(Error::msg(format!("Failed to send handshake message: {}", e)))
|
||||||
|
} else {
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log::error!(
|
Err(Error::msg(format!(
|
||||||
"Failed to find new member with process id {}",
|
"Failed to find new member with process id {}",
|
||||||
pairing_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);
|
let mut new_process = Process::new(commit_msg.process_id);
|
||||||
let init_state = ProcessState {
|
let init_state = ProcessState {
|
||||||
commited_in: commit_msg.process_id,
|
commited_in: commit_msg.process_id,
|
||||||
@ -173,6 +180,11 @@ fn handle_existing_commitment(
|
|||||||
);
|
);
|
||||||
// If the validation succeed, we return a new tip
|
// If the validation succeed, we return a new tip
|
||||||
process_validation(process_to_udpate, commit_msg)?;
|
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(())
|
Ok(())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user