From 8f78d0dfbd028e8db1a3ff9596f2521568f86b18 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Sat, 16 Nov 2024 10:42:53 -0500 Subject: reliable multicast: refactor Receive --- src/main/java/derms/net/rmulticast/Receive.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/main') diff --git a/src/main/java/derms/net/rmulticast/Receive.java b/src/main/java/derms/net/rmulticast/Receive.java index ea11c67..fee3c0a 100644 --- a/src/main/java/derms/net/rmulticast/Receive.java +++ b/src/main/java/derms/net/rmulticast/Receive.java @@ -50,13 +50,23 @@ class Receive implements Runnable { private void receive(Message msg) throws ClassCastException { groupMembers.add(msg.sender); + receiveAcks(msg); + receiveNacks(msg); + if (msg instanceof HeartbeatMessage) + return; // Only deliver in-band messages. + deliver((Message) msg); + } + + private void receiveAcks(Message msg) { for (MessageID mid : msg.acks) { acks.remove(mid); if (!received.contains(mid)) nacks.add(mid); } + } + private void receiveNacks(Message msg) { for (MessageID mid : msg.nacks) { try { Message rmsg = received.getByID(mid); @@ -65,10 +75,6 @@ class Receive implements Runnable { nacks.add(mid); } } - - if (msg instanceof HeartbeatMessage) - return; // Only deliver in-band messages. - deliver((Message) msg); } private void deliver(Message msg) { -- cgit v1.2.3