package org.dromara.tcpfuwu.starter;


import lombok.extern.slf4j.Slf4j;
import org.dromara.tcpfuwu.server.UnifiedTcpServer;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import javax.annotation.PreDestroy;

/**
 * Spring启动时自动初始化TCP服务器，关闭时释放资源
 */
@Component
@Slf4j
public class TcpServersStarter implements CommandLineRunner {

    private final UnifiedTcpServer unifiedTcpServer;

    // 构造注入两个TCP服务器Bean
    public TcpServersStarter(  UnifiedTcpServer unifiedTcpServer) {
        this.unifiedTcpServer = unifiedTcpServer;
    }

    /**
     * Spring Boot启动后执行（CommandLineRunner接口方法）
     */
    @Override
    public void run(String... args) throws Exception {
        log.info("【TCP服务器启动器】开始初始化Modbus和逆变器心跳服务器...");
        // 启动两个服务器（独立线程，不阻塞Spring主线程）
        unifiedTcpServer.start();
        log.info("【TCP服务器启动器】所有TCP服务器初始化完成");
    }

    /**
     * Spring容器销毁前执行（释放资源）
     */
    @PreDestroy
    public void stopTcpServers() {
        log.info("【TCP服务器启动器】开始关闭所有TCP服务器...");
        unifiedTcpServer.stop();
        log.info("【TCP服务器启动器】所有TCP服务器已关闭");
    }
}
