From b767b34d97fdacd891702b041cc5eb1fdcb0b0a3 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Fri, 15 Nov 2024 12:16:53 -0500 Subject: reliable multicast: record addresses of group members --- src/main/java/derms/net/rmulticast/ReliableMulticast.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/main/java/derms/net/rmulticast/ReliableMulticast.java') diff --git a/src/main/java/derms/net/rmulticast/ReliableMulticast.java b/src/main/java/derms/net/rmulticast/ReliableMulticast.java index 8b39ae6..de07f39 100644 --- a/src/main/java/derms/net/rmulticast/ReliableMulticast.java +++ b/src/main/java/derms/net/rmulticast/ReliableMulticast.java @@ -16,28 +16,30 @@ import java.util.logging.Logger; /** TODO */ public class ReliableMulticast { + private final SocketAddress group; + private final InetAddress laddr; // Local address. private final Set positiveAcks; // Positively acknowledged messages. private final Set negativeAcks; // Negatively acknowledged messages. private final BlockingQueue> retransmissions; // Messages pending retransmission. private final AtomicReference lastSend; - private final SocketAddress group; private final ConcurrentMulticastSocket outSock; - private final InetAddress laddr; // Local address. + private final Set groupMembers; private final BlockingQueue> delivered; private final Logger log; public ReliableMulticast(InetSocketAddress group, InetAddress laddr) throws IOException { + this.group = group; + this.laddr = laddr; + this.positiveAcks = new ConcurrentHashMap().keySet(); this.negativeAcks = new ConcurrentHashMap().keySet(); this.retransmissions = new LinkedBlockingQueue>(); this.lastSend = new AtomicReference(Instant.now()); - this.group = group; - this.outSock = new ConcurrentMulticastSocket(group.getPort()); this.outSock.joinGroup(group.getAddress()); - this.laddr = laddr; + this.groupMembers = new ConcurrentHashMap().keySet(); this.delivered = new LinkedBlockingQueue>(); @@ -45,7 +47,7 @@ public class ReliableMulticast { ConcurrentMulticastSocket inSock = new ConcurrentMulticastSocket(); inSock.joinGroup(group.getAddress()); - (new Thread(new Receive(inSock, positiveAcks, negativeAcks, retransmissions, delivered))).start(); + (new Thread(new Receive(inSock, positiveAcks, negativeAcks, retransmissions, groupMembers, delivered))).start(); (new Thread(new Retransmit(retransmissions, outSock, group))).start(); } -- cgit v1.2.3