Minestom/src/main/java/net/minestom/server/crypto/LastSeenMessages.java

51 lines
1.5 KiB
Java

package net.minestom.server.crypto;
import net.minestom.server.utils.binary.BinaryReader;
import net.minestom.server.utils.binary.BinaryWriter;
import net.minestom.server.utils.binary.Writeable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.UUID;
public record LastSeenMessages(@NotNull List<@NotNull Entry> entries) implements Writeable {
public LastSeenMessages {
entries = List.copyOf(entries);
}
public LastSeenMessages(BinaryReader reader) {
this(reader.readVarIntList(Entry::new));
}
@Override
public void write(@NotNull BinaryWriter writer) {
}
public record Entry(UUID uuid, MessageSignature lastSignature) implements Writeable {
public Entry(BinaryReader reader) {
this(reader.readUuid(), new MessageSignature(reader));
}
@Override
public void write(@NotNull BinaryWriter writer) {
writer.writeUuid(uuid);
writer.write(lastSignature);
}
}
public record Update(LastSeenMessages lastSeen, @Nullable Entry lastReceived) implements Writeable {
public Update(BinaryReader reader) {
this(new LastSeenMessages(reader), reader.readBoolean() ? new Entry(reader) : null);
}
@Override
public void write(@NotNull BinaryWriter writer) {
writer.write(lastSeen);
writer.writeBoolean(lastReceived != null);
if (lastReceived != null) writer.write(lastReceived);
}
}
}