+ macro_rules! drain_msg_events_on_disconnect {
+ ($counterparty_id: expr) => { {
+ if $counterparty_id == 0 {
+ for event in nodes[0].get_and_clear_pending_msg_events() {
+ match event {
+ events::MessageSendEvent::UpdateHTLCs { .. } => {},
+ events::MessageSendEvent::SendRevokeAndACK { .. } => {},
+ events::MessageSendEvent::SendChannelReestablish { .. } => {},
+ events::MessageSendEvent::SendFundingLocked { .. } => {},
+ events::MessageSendEvent::PaymentFailureNetworkUpdate { .. } => {},
+ _ => panic!("Unhandled message event"),
+ }
+ }
+ ba_events.clear();
+ } else {
+ for event in nodes[2].get_and_clear_pending_msg_events() {
+ match event {
+ events::MessageSendEvent::UpdateHTLCs { .. } => {},
+ events::MessageSendEvent::SendRevokeAndACK { .. } => {},
+ events::MessageSendEvent::SendChannelReestablish { .. } => {},
+ events::MessageSendEvent::SendFundingLocked { .. } => {},
+ events::MessageSendEvent::PaymentFailureNetworkUpdate { .. } => {},
+ _ => panic!("Unhandled message event"),
+ }
+ }
+ bc_events.clear();
+ }
+ let mut events = nodes[1].get_and_clear_pending_msg_events();
+ let drop_node_id = if $counterparty_id == 0 { nodes[0].get_our_node_id() } else { nodes[2].get_our_node_id() };
+ let msg_sink = if $counterparty_id == 0 { &mut bc_events } else { &mut ba_events };
+ for event in events.drain(..) {
+ let push = match event {
+ events::MessageSendEvent::UpdateHTLCs { ref node_id, .. } => {
+ if *node_id != drop_node_id { true } else { false }
+ },
+ events::MessageSendEvent::SendRevokeAndACK { ref node_id, .. } => {
+ if *node_id != drop_node_id { true } else { false }
+ },
+ events::MessageSendEvent::SendChannelReestablish { ref node_id, .. } => {
+ if *node_id != drop_node_id { true } else { false }
+ },
+ events::MessageSendEvent::SendFundingLocked { .. } => false,
+ events::MessageSendEvent::PaymentFailureNetworkUpdate { .. } => false,
+ _ => panic!("Unhandled message event"),
+ };
+ if push { msg_sink.push(event); }
+ }
+ } }
+ }
+