package com.battery.business.runtime;
|
import java.io.IOException;
|
import org.springframework.boot.ApplicationRunner;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.annotation.*;
|
import com.battery.device.api.registry.*;
|
import com.battery.device.api.model.AdapterCapabilities;
|
import com.battery.device.simulator.*;
|
/** 开发模拟器装配可整体移除,业务和真实 BTS 不引用此配置。 */
|
@Configuration
|
@Profile("dev-simulator")
|
public class DevelopmentSimulatorConfig {
|
/** 按配置的监听端口装配开发模拟器;仅 dev-simulator 生效,容器关闭时释放其端口。 */
|
@Bean(destroyMethod = "close")
|
@Profile("dev-simulator")
|
public BtsDevelopmentSimulator btsDevelopmentSimulator(BtsSimulatorStateStore stateStore,
|
@Value("${battery.dev-simulator.port:15020}") int simulatorPort) throws IOException
|
{
|
return new BtsDevelopmentSimulator(simulatorPort, stateStore);
|
}
|
|
/**
|
* 将固定开发适配器按代码装配注册进运行时实例表,不写 t_device_adapter。
|
*
|
* <p>其运行时能力只有发现与实时观测,控制能力为不支持,不向设备发送控制命令。</p>
|
*/
|
@Bean
|
@Profile("dev-simulator")
|
public ApplicationRunner registerDevelopmentSimulatorAdapter(DeviceAdapterRegistry registry,
|
BtsDevelopmentSimulator simulator,
|
@Value("${battery.dev-simulator.port:15020}") int simulatorPort)
|
{
|
// 固定开发装配不进入 t_device_adapter,直接注册运行时实例。
|
// 注册模拟器对象本身,使发现与取数落在同一实例上,不再单独注入扩展观测 Bean。
|
return arguments -> registry.register(developmentSimulatorRuntimeConfig(simulatorPort), simulator);
|
}
|
|
private AdapterInstanceConfig developmentSimulatorRuntimeConfig(int simulatorPort)
|
{
|
return new AdapterInstanceConfig(BtsDevelopmentSimulator.ADAPTER_CODE, "BTS", BtsDevelopmentSimulator.HOST,
|
simulatorPort, BtsDevelopmentSimulator.POLL_INTERVAL_MS,
|
"Asia/Hong_Kong", true,
|
new AdapterCapabilities(true, true, false, false));
|
}
|
}
|