68 lines
2.7 KiB
Java
68 lines
2.7 KiB
Java
package com.ruoyi.shadow.kernel;
|
|
|
|
import com.ruoyi.ft546.protocol.Ft546EncodedCommand;
|
|
import com.ruoyi.ft546.protocol.Ft546SrgvCommandIntent;
|
|
import com.ruoyi.wcs.application.dispatch.DispatchCycleResult;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
public final class ShadowCycleResult {
|
|
private final String statusCode;
|
|
private final String reasonCode;
|
|
private final DispatchCycleResult decisions;
|
|
private final List<Ft546SrgvCommandIntent> intents;
|
|
private final List<Ft546EncodedCommand> encodedCommands;
|
|
|
|
private ShadowCycleResult(String statusCode, String reasonCode,
|
|
DispatchCycleResult decisions,
|
|
List<Ft546SrgvCommandIntent> intents,
|
|
List<Ft546EncodedCommand> encodedCommands) {
|
|
this.statusCode = statusCode;
|
|
this.reasonCode = reasonCode;
|
|
this.decisions = decisions;
|
|
this.intents = immutable(intents);
|
|
this.encodedCommands = immutable(encodedCommands);
|
|
}
|
|
|
|
public static ShadowCycleResult insufficient(String reasonCode) {
|
|
return new ShadowCycleResult("INSUFFICIENT_FACTS", reasonCode, null,
|
|
Collections.<Ft546SrgvCommandIntent>emptyList(),
|
|
Collections.<Ft546EncodedCommand>emptyList());
|
|
}
|
|
|
|
public static ShadowCycleResult retry(DispatchCycleResult decisions) {
|
|
return new ShadowCycleResult("RETRY_SNAPSHOT_CHANGED",
|
|
"SHADOW_TRAFFIC_STATE_CHANGED", decisions,
|
|
Collections.<Ft546SrgvCommandIntent>emptyList(),
|
|
Collections.<Ft546EncodedCommand>emptyList());
|
|
}
|
|
|
|
public static ShadowCycleResult comparable(
|
|
DispatchCycleResult decisions,
|
|
List<Ft546SrgvCommandIntent> intents,
|
|
List<Ft546EncodedCommand> encodedCommands) {
|
|
return new ShadowCycleResult("COMPARABLE", null, decisions, intents,
|
|
encodedCommands);
|
|
}
|
|
|
|
public static ShadowCycleResult degraded(String reasonCode) {
|
|
return new ShadowCycleResult("DEGRADED", reasonCode, null,
|
|
Collections.<Ft546SrgvCommandIntent>emptyList(),
|
|
Collections.<Ft546EncodedCommand>emptyList());
|
|
}
|
|
|
|
public String getStatusCode() { return statusCode; }
|
|
public String getReasonCode() { return reasonCode; }
|
|
public DispatchCycleResult getDecisions() { return decisions; }
|
|
public List<Ft546SrgvCommandIntent> getIntents() { return intents; }
|
|
public List<Ft546EncodedCommand> getEncodedCommands() {
|
|
return encodedCommands;
|
|
}
|
|
|
|
private static <T> List<T> immutable(List<T> source) {
|
|
return Collections.unmodifiableList(new ArrayList<T>(source));
|
|
}
|
|
}
|