package com.example.mina.client.base; import com.example.mina.client.entity.AbstractClientMessage; import com.example.mina.client.entity.Command; import com.example.mina.server.base.AbstractHardwareDataBuffer; 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 java.net.InetSocketAddress; import java.util.List; /** * @author dy * @date 2021/3/10 */ public abstract class AbstractClient { protected ProtocolCodecFactory protocolCodecFactory; protected AbstractVirtualBoxClientHandler abstractVirtualBoxClientHandler; protected AbstractHardwareDataBuffer hardwareDataBuffer; protected AbstractClientMessage abstractClientMessage; protected AbstractClient() { initHardwareDataBuffer(); initClientMessage(); init(abstractClientMessage); } protected abstract void init(AbstractClientMessage abstractClientMessage); protected abstract void initHardwareDataBuffer(); protected abstract void initClientMessage(); 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.getClientMessage().getHost(), abstractVirtualBoxClientHandler.getClientMessage().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(); }