summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/net/tomulticast/TotalOrderMulticastSender.java
diff options
context:
space:
mode:
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);
+ }
+}