feat(ft546): run shared dispatch kernel in shadow
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
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 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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user