package com.battery.device.bts; import java.time.Duration; import java.time.ZoneId; import com.battery.device.api.DeviceAdapter; import com.battery.device.api.registry.AdapterInstanceConfig; import com.battery.device.api.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"; } /** 按实例配置装配 TCP 传输与报文编解码器;连接与响应超时取本类的固定常量。 */ @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())), config.capabilities()); } }