package org.corfudb.infrastructure; import com.google.common.collect.ImmutableMap; import lombok.Data; import java.util.Map; import java.util.Set; /** * Created by zlokhandwala on 3/21/17. */ @Data public class PollReport { private final Boolean isFailurePresent; private final Set<String> failingNodes; private final ImmutableMap<String, Long> outOfPhaseEpochNodes; private PollReport(PollReportBuilder pollReportBuilder) { this.isFailurePresent = pollReportBuilder.isFailurePresent; this.failingNodes = pollReportBuilder.failingNodes; this.outOfPhaseEpochNodes = pollReportBuilder.outOfPhaseEpochNodes; } public static class PollReportBuilder { private Boolean isFailurePresent = false; private Set<String> failingNodes; private ImmutableMap<String, Long> outOfPhaseEpochNodes; public PollReportBuilder setIsStatusChangePresent() { isFailurePresent = true; return this; } public PollReportBuilder setFailingNodes(Set<String> failingNodes) { if (!failingNodes.isEmpty()) { isFailurePresent = true; } this.failingNodes = failingNodes; return this; } public PollReportBuilder setOutOfPhaseEpochNodes(Map<String, Long> outOfPhaseEpochNodes) { if (!outOfPhaseEpochNodes.isEmpty()) { isFailurePresent = true; } this.outOfPhaseEpochNodes = ImmutableMap.copyOf(outOfPhaseEpochNodes); return this; } public PollReport build() { return new PollReport(this); } } }