yeg
6 天以前 2222cd054570014ddc3e9a7d72c365c505e1ba5e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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());
    }
}