diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/Message.java b/common/src/main/java/org/mvndaemon/mvnd/common/Message.java index d6ebc268..6c7de2b7 100644 --- a/common/src/main/java/org/mvndaemon/mvnd/common/Message.java +++ b/common/src/main/java/org/mvndaemon/mvnd/common/Message.java @@ -31,6 +31,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.concurrent.atomic.AtomicLong; public abstract class Message { public static final int BUILD_REQUEST = 1; @@ -125,10 +126,13 @@ public abstract class Message { throw new IllegalStateException("Unexpected message type: " + type); } + private static final AtomicLong sequence = new AtomicLong(); + + final long seq = sequence.incrementAndGet(); final long timestamp = System.nanoTime(); public static Comparator getMessageComparator() { - return Comparator.comparingInt(Message::getClassOrder).thenComparingLong(Message::timestamp); + return Comparator.comparingInt(Message::getClassOrder).thenComparingLong(Message::seq); } public static int getClassOrder(Message m) { @@ -178,6 +182,10 @@ public abstract class Message { } } + public long seq() { + return seq; + } + public long timestamp() { return timestamp; }