Files
FT546-WCS/ruoyi-wcs-shadow/src/main/java/com/ruoyi/shadow/config/ShadowKernelConfiguration.java

61 lines
2.1 KiB
Java

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);
}
}