AbstractVirtualBoxServer.java 1.86 KB
package com.example.mina.boxserver;

import com.example.mina.base.AbstractVirtualBoxHandler;
import com.example.mina.property.AbstractVirtualBoxProperties;
import lombok.extern.slf4j.Slf4j;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;

import java.net.InetSocketAddress;

/**
 * @author 杜云山
 * @date 21/03/05
 */
@Slf4j
public class AbstractVirtualBoxServer implements ApplicationRunner {

    private final AbstractVirtualBoxProperties abstractVirtualBoxProperties;

    private final AbstractVirtualBoxHandler abstractVirtualBoxHandler;

    public AbstractVirtualBoxServer(AbstractVirtualBoxProperties abstractVirtualBoxProperties,
                                    AbstractVirtualBoxHandler abstractVirtualBoxHandler) {
        this.abstractVirtualBoxProperties = abstractVirtualBoxProperties;
        this.abstractVirtualBoxHandler = abstractVirtualBoxHandler;
    }

    @Override
    public void run(ApplicationArguments args) {

        String name = abstractVirtualBoxProperties.getName();
        Integer port = abstractVirtualBoxProperties.getPort();

        if (!abstractVirtualBoxProperties.getEnable()) {
            log.info("{}服务端 配置未开启", name);
            return;
        }

        if (port == null) {
            log.info("{}服务端 端口未配置", name);
            return;
        }

        try {
            NioSocketAcceptor acceptor = new NioSocketAcceptor();
            acceptor.setHandler(abstractVirtualBoxHandler);
            acceptor.setReuseAddress(true);
            acceptor.bind(new InetSocketAddress(port));
            log.info("{}服务端已经启动,监听端口: {}", name, port);
        } catch (Exception e) {
            log.error("无法启动{}服务端, {}", name, e.getMessage(), e);
        }
    }

}