feat(ft546): add isolated shadow process
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package com.ruoyi.shadow.config;
|
||||
|
||||
import com.ruoyi.wcs.application.dispatch.DispatchCoordinator;
|
||||
import com.ruoyi.wcs.domain.dispatch.DefaultVehicleAssignmentPolicy;
|
||||
import com.ruoyi.wcs.domain.dispatch.VehicleAssignmentPolicy;
|
||||
import com.ruoyi.wcs.domain.shared.IdGenerator;
|
||||
import com.ruoyi.wcs.domain.traffic.AStarRoutePlanner;
|
||||
import com.ruoyi.wcs.domain.traffic.DeadlockGuard;
|
||||
import com.ruoyi.wcs.domain.traffic.RoutePlanner;
|
||||
import com.ruoyi.wcs.domain.traffic.WaitForGraph;
|
||||
import com.ruoyi.wcs.port.out.DispatchPolicy;
|
||||
import com.ruoyi.wcs.port.out.TrafficStateRepository;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
public class ShadowKernelConfiguration {
|
||||
@Bean
|
||||
public RoutePlanner shadowRoutePlanner() {
|
||||
return new AStarRoutePlanner();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public VehicleAssignmentPolicy shadowVehicleAssignmentPolicy(
|
||||
RoutePlanner routePlanner) {
|
||||
return new DefaultVehicleAssignmentPolicy(routePlanner,
|
||||
DispatchPolicy.NONE);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public DeadlockGuard shadowDeadlockGuard(RoutePlanner routePlanner) {
|
||||
return new DeadlockGuard(new WaitForGraph(), routePlanner);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public IdGenerator shadowIdGenerator() {
|
||||
AtomicLong sequence = new AtomicLong();
|
||||
return () -> "SHADOW-" + sequence.incrementAndGet();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public TrafficStateRepository disabledShadowTrafficStateRepository() {
|
||||
return commit -> {
|
||||
throw new IllegalStateException(
|
||||
"SHADOW_TRAFFIC_STATE_REPOSITORY_NOT_CONFIGURED");
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public DispatchCoordinator shadowDispatchCoordinator(
|
||||
VehicleAssignmentPolicy assignmentPolicy,
|
||||
DeadlockGuard deadlockGuard,
|
||||
TrafficStateRepository trafficStateRepository,
|
||||
IdGenerator idGenerator) {
|
||||
return new DispatchCoordinator(assignmentPolicy, deadlockGuard,
|
||||
trafficStateRepository, idGenerator);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user