summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/net/tomulticast/TotalOrderMulticastSender.java
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-16 15:54:22 -0500
committerSam Anthony <sam@samanthony.xyz>2024-11-16 15:54:22 -0500
commit35c2f2a917de223c658ecc594719edd09bead7cc (patch)
tree6568546cf457758dca4fee06a391f7f43130d835 /src/main/java/derms/net/tomulticast/TotalOrderMulticastSender.java
parent05c4e2b5770133228daff7c262945f078a4e4456 (diff)
downloadsoen423-35c2f2a917de223c658ecc594719edd09bead7cc.zip
TotalOrderMulticastSender
Diffstat (limited to 'src/main/java/derms/net/tomulticast/TotalOrderMulticastSender.java')
-rw-r--r--src/main/java/derms/net/tomulticast/TotalOrderMulticastSender.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/derms/net/tomulticast/TotalOrderMulticastSender.java b/src/main/java/derms/net/tomulticast/TotalOrderMulticastSender.java
new file mode 100644
index 0000000..63498a6
--- /dev/null
+++ b/src/main/java/derms/net/tomulticast/TotalOrderMulticastSender.java
@@ -0,0 +1,31 @@
+package derms.net.tomulticast;
+
+import derms.net.rmulticast.MessagePayload;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+
+/**
+ * The single sending process in a {@link TotalOrderMulticast} group. <b>Only one sender is
+ * allowed per group.</b>
+ */
+public class TotalOrderMulticastSender<T extends MessagePayload> extends TotalOrderMulticast<T> {
+ /**
+ * Join the specified totally-ordered multicast group as its lone sender.
+ *
+ * @param group The IP address and port of the multicast group to join.
+ * @param laddr The IP address of the local process.
+ */
+ public TotalOrderMulticastSender(InetSocketAddress group, InetAddress laddr) throws IOException {
+ super(group, laddr);
+ }
+
+ /** Send a message to the group. */
+ public void send(T payload) throws IOException {
+ Message<T> msg = new Message<T>(seq, payload);
+ sock.send(msg);
+ incSeq();
+ log.info("Sent " + msg + " from " + sock + " to " + group);
+ }
+}