AbstractClient.java 1.92 KB
package com.example.mina.client.base;

import org.apache.mina.core.service.IoConnector;
import org.apache.mina.filter.codec.ProtocolCodecFactory;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;

import java.net.InetSocketAddress;

/**
 * @author dy
 * @date 2021/3/10
 */
public abstract class AbstractClient {

    private final ProtocolCodecFactory protocolCodecFactory;

    private final AbstractVirtualBoxClientHandler abstractVirtualBoxClientHandler;

    protected AbstractClient(ProtocolCodecFactory protocolCodecFactory,
                             AbstractVirtualBoxClientHandler abstractVirtualBoxClientHandler) {
        this.protocolCodecFactory = protocolCodecFactory;
        this.abstractVirtualBoxClientHandler = abstractVirtualBoxClientHandler;
    }

    protected abstract void getBoxName();

    public void start() {
        //1、创建客户端IoService
        IoConnector connector = new NioSocketConnector();
        //客户端链接超时时间
        connector.setConnectTimeoutMillis(30000);
        //2、客户端过滤器
        connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(protocolCodecFactory));
        //3、客户端IoHandler,发生消息
        connector.setHandler(abstractVirtualBoxClientHandler);
        //连接服务端
        connector.connect(new InetSocketAddress(abstractVirtualBoxClientHandler.command.getHost(),
                abstractVirtualBoxClientHandler.command.getPort()));
    }

    public boolean isConnected() {
        return false;
    }

    public void close() {

    }

    abstract public boolean setAttenuation(int row, int col, int attenuation);

    abstract public int getAttenuation(int row, int col);

    abstract public Boolean reset();

    abstract public int[][] getAll();

}