package com.ruoyi.device.bts; import java.time.Duration; import java.time.ZoneId; import com.ruoyi.device.api.DeviceAdapter; import com.ruoyi.device.registry.AdapterInstanceConfig; import com.ruoyi.device.registry.DeviceAdapterFactory; /** 根据数据库配置构造 BTS 只读适配器。 */ public final class BtsDeviceAdapterFactory implements DeviceAdapterFactory { private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds(3); private static final Duration RESPONSE_TIMEOUT = Duration.ofSeconds(30); @Override public String adapterType() { return "BTS"; } @Override public DeviceAdapter create(AdapterInstanceConfig config) { BtsTcpTransport transport = new BtsTcpTransport(config.host(), config.port(), CONNECT_TIMEOUT, RESPONSE_TIMEOUT); return new BtsDeviceAdapter(config.adapterCode(), transport, new BtsXmlCodec(config.adapterCode(), ZoneId.of(config.timezoneId()))); } }