XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEServerManager

【Java】我的世界XFE服务器管理器

公开
关注 0 Fork 0 Star 0
UTF-8
package com.xfestudio.xfeservermanager.core.rollback;

import java.util.List;

/** An atomically captured, fixed high-watermark view. */
public record JournalSlice(long watermark, List<JournalEntry> entries, List<JournalGap> gaps) {
    public JournalSlice {
        if (watermark < 0) throw new IllegalArgumentException("watermark must be non-negative");
        entries = List.copyOf(entries);
        gaps = List.copyOf(gaps);
        if (entries.stream().anyMatch(entry -> entry.sequence() > watermark)) {
            throw new IllegalArgumentException("entry exceeds watermark");
        }
        var sequences = new java.util.HashSet<Long>();
        var eventIds = new java.util.HashSet<java.util.UUID>();
        for (JournalEntry entry : entries) {
            if (!sequences.add(entry.sequence())) throw new IllegalArgumentException("duplicate journal sequence");
            if (!eventIds.add(entry.change().eventId())) throw new IllegalArgumentException("duplicate journal event id");
        }
    }
}