diff --git a/pom.xml b/pom.xml
index 622b282..8679a6a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,6 +40,11 @@
mina-core
2.1.4
+
+ org.apache.mina
+ mina-http
+ 2.1.4
+
org.springframework.boot
diff --git a/src/main/java/com/example/mina/client/base/AbstractClient.java b/src/main/java/com/example/mina/client/base/AbstractClient.java
index d6d798e..6690654 100644
--- a/src/main/java/com/example/mina/client/base/AbstractClient.java
+++ b/src/main/java/com/example/mina/client/base/AbstractClient.java
@@ -1,9 +1,5 @@
package com.example.mina.client.base;
-import com.example.mina.client.entity.AbstractClientMessage;
-import com.example.mina.client.entity.ClientDTO;
-import com.example.mina.client.service.ServerService;
-import com.example.mina.client.service.impl.ServerServiceImpl;
import com.example.mina.server.base.AbstractHardwareDataBuffer;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.service.IoConnector;
@@ -13,6 +9,7 @@ import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import java.net.InetSocketAddress;
+import java.util.concurrent.ArrayBlockingQueue;
/**
* @author dy
@@ -20,59 +17,87 @@ import java.net.InetSocketAddress;
*/
public abstract class AbstractClient {
- protected ProtocolCodecFactory protocolCodecFactory;
+ /**
+ * 客户端与设备端连接的配置信息
+ */
+ protected BoxConnectConfig boxConnectConfig;
- protected AbstractVirtualBoxClientHandler abstractVirtualBoxClientHandler;
+ /**
+ * 存储设备返回的响应数据缓存
+ */
+ protected AbstractHardwareDataBuffer responsePool;
- protected AbstractHardwareDataBuffer hardwareDataBuffer;
-
- protected AbstractClientMessage abstractClientMessage;
+ /**
+ * 存储客户端的请求指令的队列
+ */
+ protected ArrayBlockingQueue requestsPool;
protected IoSession ioSession;
- protected ServerService serverService = new ServerServiceImpl();
- protected AbstractClient() {
- init();
+ public AbstractClient(BoxConnectConfig connectConfig) {
+ this.boxConnectConfig = connectConfig;
+ this.requestsPool = new ArrayBlockingQueue(100);
+ //TODO 初始化响应缓存
+ this.responsePool = null;
+ }
+
+ /**
+ *获取设备的类型
+ */
+ abstract public String getDeviceType();
+
+ /**
+ * 返回客户端对响应的Handler
+ * @return
+ */
+ abstract protected AbstractVirtualBoxClientHandler getIoHandler();
+
+ /**
+ * 返回该盒子的编解码器
+ * @return
+ */
+ abstract protected ProtocolCodecFactory getCodecFactory();
+
+ /**
+ * 返回缓存数据,提供给Request执行;
+ * @return
+ */
+ public AbstractHardwareDataBuffer getResponsePool() {
+ return this.responsePool;
}
- protected abstract void init();
- public void start(ClientDTO clientDTO) {
+ public void start() {
//1、创建客户端IoService
IoConnector connector = new NioSocketConnector();
//客户端链接超时时间
connector.setConnectTimeoutMillis(30000);
//2、客户端过滤器
- connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(protocolCodecFactory));
+ connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(getCodecFactory()));
//3、客户端IoHandler,发生消息
- connector.setHandler(abstractVirtualBoxClientHandler);
+ connector.setHandler(getIoHandler());
//连接服务端
- ConnectFuture connectFuture = connector.connect(new InetSocketAddress(abstractClientMessage.getServerMessage().getHost(),
- abstractClientMessage.getServerMessage().getPort()));
+ ConnectFuture connectFuture = connector.connect(new InetSocketAddress(boxConnectConfig.getHost(),
+ boxConnectConfig.getPort()));
// 等待建立连接
connectFuture.awaitUninterruptibly();
// 获取连接会话
this.ioSession = connectFuture.getSession();
+ this.ioSession.setAttribute(BoxConstants.SESSION_CONFIG_NAME, boxConnectConfig);
}
+ /**
+ * 执行指令
+ * @param request
+ */
+ public , R extends BaseResponse> R execute(Q request) {
+ requestsPool.offer(request);
+ ioSession.write(request);
- abstract public int getAttenuation(int col);
-
- /*public boolean isConnected() {
- return false;
- }*/
-
- //public void close() {}
-
- abstract public void setAttenuation(ClientDTO clientDTO);
-
-
-
- //abstract public Boolean reset();
-
- //abstract public int[][] getAll();
+ return request.execute();
+ }
}
diff --git a/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java b/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java
index 38b905a..6d593b9 100644
--- a/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java
+++ b/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java
@@ -1,106 +1,84 @@
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 com.example.mina.server.util.LogUtils;
import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
-import java.nio.charset.StandardCharsets;
-
/**
* @author dy
*/
@Data
-public abstract class AbstractVirtualBoxClientHandler
- extends IoHandlerAdapter {
+@Slf4j
+public abstract class AbstractVirtualBoxClientHandler extends IoHandlerAdapter {
+
+ protected String deviceType;
- protected AbstractClientMessage clientMessage;
+ protected AbstractHardwareDataBuffer responsePool;
- protected AbstractHardwareDataBuffer hardwareDataBuffer;
- private SendMessage sendMessage = new SendMessage();
+ public AbstractVirtualBoxClientHandler(String deviceType, AbstractHardwareDataBuffer abstractHardwareDataBuffer) {
+ this.deviceType = deviceType;
+ this.responsePool = abstractHardwareDataBuffer;
+ }
- private BaseReceiveMessage receiveMessage;
+ protected BoxConnectConfig getConnectConfig(IoSession session) {
+ Object boxConnectConfig = session.getAttribute(BoxConstants.SESSION_CONFIG_NAME);
- public AbstractVirtualBoxClientHandler(AbstractClientMessage clientMessage,
- AbstractHardwareDataBuffer abstractHardwareDataBuffer) {
- this.clientMessage = clientMessage;
- this.hardwareDataBuffer = abstractHardwareDataBuffer;
+ if( boxConnectConfig instanceof BoxConnectConfig) {
+ return (BoxConnectConfig) boxConnectConfig;
+ }
+ return null;
}
@Override
public void exceptionCaught(IoSession session, Throwable throwable) {
- System.out.println("客户端exceptionCaught被调用!");
- throwable.printStackTrace();
}
@Override
public void messageReceived(IoSession session, Object message) {
- if (message instanceof BaseReceiveMessage) {
- receiveMessage = (RECEIVE) message;
+ if (!(message instanceof IoBuffer)) {
+ log.error("客户端接收到的消息不为定义的响应类! message:" + message);
+ throw new RuntimeException("Unsupported response message");
}
- handleCommandResponse(sendMessage, receiveMessage);
- System.out.println("客户端messageReceived被调用!");
- System.out.println("client端接收信息:" + new String(receiveMessage.getReceiveMessage(), StandardCharsets.UTF_8));
- LogUtils.println("client端接收信息hex:" , receiveMessage.getReceiveMessage());
+ //TODO 客户端将数据服务器的字符串数组读取出来
+ byte[] response = null;
+ log.info("the client recieved the device response, deviceType: {}, device:{}, response is: {}", deviceType,
+ getConnectConfig(session), response);
+ handleCommandResponse(response);
}
@Override
public void messageSent(IoSession session, Object message) {
- System.out.println("客户端messageSent被调用!");
- System.out.println("client端发送信息:" + new String((byte[]) message, StandardCharsets.UTF_8));
- LogUtils.println("client端发送信息hex:", (byte[]) message);
- this.sendMessage = SendMessage.builder().sendMessage((byte[]) message).build();
}
@Override
public void inputClosed(IoSession session) {
- System.out.println("客户端inputClosed被调用!");
- System.out.println("client端:" + session.getId() + " 关闭输入");
}
@Override
public void sessionClosed(IoSession session) {
- System.out.println("客户端sessionClosed被调用!");
- System.out.println("client端与:" + session.getRemoteAddress().toString() + " 关闭连接");
- System.exit(0);
}
@Override
public void sessionCreated(IoSession session) {
- System.out.println("客户端sessionCreated被调用!");
- System.out.println("client端与:" + session.getRemoteAddress().toString() + " 建立连接");
+
}
@Override
public void sessionIdle(IoSession session, IdleStatus status) {
- System.out.println("客户端sessionIdle被调用!");
- System.out.println("client端闲置连接:会话 " + session.getId() + " 被触发 " + session.getIdleCount(status) + " 次");
+ log.info("the session with box was idle, deviceType:{}, device is {}", deviceType, getConnectConfig(session));
}
@Override
public void sessionOpened(IoSession session) {
- // for (int i = 0; i < clientMessage.getCommands().size(); i++) {
-// handleOneCommand(i, session);
-// }
-// handleOneCommand(1, session);
- System.out.println("客户端sessionOpened被调用!");
- System.out.println("client端打开连接");
+ log.info("the system has connected to device, deviceType: {}, device is {}", deviceType, getConnectConfig(session));
}
- protected void handleOneCommand(int i, IoSession session) {
-
- Command command = clientMessage.getCommands().get(i);
-
- session.write(command.getBytes());
- }
-
- protected abstract boolean handleCommandResponse(SendMessage sendMessage, BaseReceiveMessage receiveMessage);
-
+ abstract public boolean handleCommandResponse(byte[] response);
}
diff --git a/src/main/java/com/example/mina/client/base/BaseReceiveMessage.java b/src/main/java/com/example/mina/client/base/BaseReceiveMessage.java
deleted file mode 100644
index ac31d32..0000000
--- a/src/main/java/com/example/mina/client/base/BaseReceiveMessage.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.example.mina.client.base;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.SuperBuilder;
-
-/**
- * @author dy
- * @date 2021/3/12
- */
-@SuperBuilder
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public abstract class BaseReceiveMessage {
-
- private byte[] receiveMessage;
-}
diff --git a/src/main/java/com/example/mina/client/base/BaseRequest.java b/src/main/java/com/example/mina/client/base/BaseRequest.java
new file mode 100644
index 0000000..cd1ec98
--- /dev/null
+++ b/src/main/java/com/example/mina/client/base/BaseRequest.java
@@ -0,0 +1,28 @@
+package com.example.mina.client.base;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * @author dy
+ * @date 2021/3/12
+ */
+@SuperBuilder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public abstract class BaseRequest {
+
+ protected AbstractClient client;
+
+ /**
+ * 指令名称
+ * @return
+ */
+ abstract public String getCommandName();
+
+ abstract public R execute();
+
+}
diff --git a/src/main/java/com/example/mina/client/base/BaseResponse.java b/src/main/java/com/example/mina/client/base/BaseResponse.java
new file mode 100644
index 0000000..725ebcd
--- /dev/null
+++ b/src/main/java/com/example/mina/client/base/BaseResponse.java
@@ -0,0 +1,9 @@
+package com.example.mina.client.base;
+
+import lombok.Data;
+
+@Data
+public abstract class BaseResponse {
+ private String responseType;
+
+}
diff --git a/src/main/java/com/example/mina/client/base/BoxConnectConfig.java b/src/main/java/com/example/mina/client/base/BoxConnectConfig.java
new file mode 100644
index 0000000..3a7c30e
--- /dev/null
+++ b/src/main/java/com/example/mina/client/base/BoxConnectConfig.java
@@ -0,0 +1,24 @@
+package com.example.mina.client.base;
+
+
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+@Builder
+public class BoxConnectConfig {
+
+ private String host;
+
+ private Integer port;
+
+ private Integer rows;
+
+ private Integer cols;
+
+ private Integer maxAttenuation;
+
+ private Map options;
+}
diff --git a/src/main/java/com/example/mina/client/base/BoxConstants.java b/src/main/java/com/example/mina/client/base/BoxConstants.java
new file mode 100644
index 0000000..9a105d7
--- /dev/null
+++ b/src/main/java/com/example/mina/client/base/BoxConstants.java
@@ -0,0 +1,13 @@
+package com.example.mina.client.base;
+
+public class BoxConstants {
+
+ public static final String SESSION_CONFIG_NAME = "SESSION_CONFIG";
+
+ public static final String DEVICE_TYPE_AERO = "AEROFLEX";
+
+ public static final String DEVICE_TYPE_LTE3000 = "LTE3000";
+
+ public static final String COMMAND_RESET = "RESET";
+
+}
diff --git a/src/main/java/com/example/mina/client/base/ByteProtocolFactory.java b/src/main/java/com/example/mina/client/base/ByteProtocolFactory.java
new file mode 100644
index 0000000..0af01be
--- /dev/null
+++ b/src/main/java/com/example/mina/client/base/ByteProtocolFactory.java
@@ -0,0 +1,61 @@
+package com.example.mina.client.base;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.codec.*;
+
+public class ByteProtocolFactory implements ProtocolCodecFactory {
+
+ private final ByteEncoder encoder;
+ private final ByteDecoder decoder;
+
+ //构造
+ public ByteProtocolFactory() {
+ encoder = new ByteEncoder();
+ decoder = new ByteDecoder();
+ }
+
+ @Override
+ public ProtocolDecoder getDecoder(IoSession arg0) throws Exception {
+ return decoder;
+ }
+
+ @Override
+ public ProtocolEncoder getEncoder(IoSession arg0) throws Exception {
+ return encoder;
+ }
+
+ public class ByteEncoder extends ProtocolEncoderAdapter {
+
+ //编码 将数据包转成字节数组
+ @Override
+ public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception {
+ byte[] bytes = (byte[]) message;
+
+ IoBuffer buffer = IoBuffer.allocate(bytes.length);
+ buffer.setAutoExpand(true);
+
+ // 将数据放入缓冲IoBuffer
+ buffer.put(bytes);
+ // 写状态切换到读状态
+ buffer.flip();
+
+ out.write(buffer);
+ }
+
+ }
+
+ public class ByteDecoder extends ProtocolDecoderAdapter {
+
+ @Override
+ public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
+ int limit = in.limit();
+ byte[] bytes = new byte[limit];
+
+ in.get(bytes);
+
+ out.write(bytes);
+ }
+ }
+
+}
diff --git a/src/main/java/com/example/mina/client/base/request/ResetRequest.java b/src/main/java/com/example/mina/client/base/request/ResetRequest.java
new file mode 100644
index 0000000..25ec226
--- /dev/null
+++ b/src/main/java/com/example/mina/client/base/request/ResetRequest.java
@@ -0,0 +1,17 @@
+package com.example.mina.client.base.request;
+
+import com.example.mina.client.base.BaseRequest;
+import com.example.mina.client.base.BoxConstants;
+import com.example.mina.client.base.response.ResetResponse;
+
+public class ResetRequest extends BaseRequest {
+ @Override
+ public String getCommandName() {
+ return BoxConstants.COMMAND_RESET;
+ }
+
+ @Override
+ public ResetResponse execute() {
+ return null;
+ }
+}
diff --git a/src/main/java/com/example/mina/client/base/response/ResetResponse.java b/src/main/java/com/example/mina/client/base/response/ResetResponse.java
new file mode 100644
index 0000000..e556dab
--- /dev/null
+++ b/src/main/java/com/example/mina/client/base/response/ResetResponse.java
@@ -0,0 +1,7 @@
+package com.example.mina.client.base.response;
+
+import com.example.mina.client.base.BaseResponse;
+
+public class ResetResponse extends BaseResponse {
+
+}
diff --git a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexByteDecoder.java b/src/main/java/com/example/mina/client/box/aeroflex/AeroflexByteDecoder.java
deleted file mode 100644
index 692c7ef..0000000
--- a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexByteDecoder.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.example.mina.client.box.aeroflex;
-
-import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.codec.ProtocolDecoder;
-import org.apache.mina.filter.codec.ProtocolDecoderAdapter;
-import org.apache.mina.filter.codec.ProtocolDecoderOutput;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author dy
- * @date 2021/3/3
- */
-public class AeroflexByteDecoder extends ProtocolDecoderAdapter {
- //打印日志信息
- private final static Logger log = LoggerFactory
- .getLogger(ProtocolDecoder.class);
-
- @Override
- public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
- int limit = in.limit();
- byte[] bytes = new byte[limit];
-
- in.get(bytes);
-
- out.write(bytes);
- }
-}
diff --git a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexByteEnCoder.java b/src/main/java/com/example/mina/client/box/aeroflex/AeroflexByteEnCoder.java
deleted file mode 100644
index 1b45ffd..0000000
--- a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexByteEnCoder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.example.mina.client.box.aeroflex;
-
-import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.codec.ProtocolEncoder;
-import org.apache.mina.filter.codec.ProtocolEncoderAdapter;
-import org.apache.mina.filter.codec.ProtocolEncoderOutput;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author dy
- * @date 2021/3/3
- */
-public class AeroflexByteEnCoder extends ProtocolEncoderAdapter {
- //用于打印日志信息
- private final static Logger log = LoggerFactory
- .getLogger(ProtocolEncoder.class);
-
- //编码 将数据包转成字节数组
- @Override
- public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception {
- byte[] bytes = (byte[]) message;
-
- IoBuffer buffer = IoBuffer.allocate(bytes.length);
- buffer.setAutoExpand(true);
-
- // 将数据放入缓冲IoBuffer
- buffer.put(bytes);
- // 写状态切换到读状态
- buffer.flip();
-
- out.write(buffer);
-// out.flush();
-//
-// buffer.free();
- }
-
-}
diff --git a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexByteFactory.java b/src/main/java/com/example/mina/client/box/aeroflex/AeroflexByteFactory.java
deleted file mode 100644
index c4fdf0b..0000000
--- a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexByteFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.example.mina.client.box.aeroflex;
-
-import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.codec.ProtocolCodecFactory;
-import org.apache.mina.filter.codec.ProtocolDecoder;
-import org.apache.mina.filter.codec.ProtocolEncoder;
-
-/**
- * @author dy
- * @date 2021/3/3
- */
-public class AeroflexByteFactory implements ProtocolCodecFactory {
- private final AeroflexByteDecoder decoder;
- private final AeroflexByteEnCoder encoder;
-
- //构造
- public AeroflexByteFactory() {
- encoder = new AeroflexByteEnCoder();
- decoder = new AeroflexByteDecoder();
- }
-
- @Override
- public ProtocolDecoder getDecoder(IoSession arg0) throws Exception {
- // TODO Auto-generated method stub
- return decoder;
- }
-
- @Override
- public ProtocolEncoder getEncoder(IoSession arg0) throws Exception {
- // TODO Auto-generated method stub
- return encoder;
- }
-
-}
diff --git a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClient.java b/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClient.java
index 0b86e5b..cd20785 100644
--- a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClient.java
+++ b/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClient.java
@@ -1,10 +1,10 @@
package com.example.mina.client.box.aeroflex;
import com.example.mina.client.base.AbstractClient;
-import com.example.mina.client.entity.AeroflexMessage;
-import com.example.mina.client.entity.ClientDTO;
-import com.example.mina.client.entity.ServerMessage;
-import com.example.mina.server.entity.AeroflexDataBuffer;
+import com.example.mina.client.base.AbstractVirtualBoxClientHandler;
+import com.example.mina.client.base.BoxConnectConfig;
+import com.example.mina.client.base.BoxConstants;
+import org.apache.mina.filter.codec.ProtocolCodecFactory;
/**
* @author dy
@@ -12,44 +12,24 @@ import com.example.mina.server.entity.AeroflexDataBuffer;
*/
public class AeroflexClient extends AbstractClient {
- @Override
- protected void init() {
- ServerMessage serverMessage = serverService.getServerService(this.getClass().getSimpleName());
- hardwareDataBuffer = new AeroflexDataBuffer(10, 10);
- abstractClientMessage = new AeroflexMessage();
- abstractClientMessage.setServerMessage(serverMessage);
-
- protocolCodecFactory = new AeroflexByteFactory();
- abstractVirtualBoxClientHandler = new AeroflexClientHandler(abstractClientMessage, hardwareDataBuffer);
+ public AeroflexClient(BoxConnectConfig boxConnectConfig) {
+ super(boxConnectConfig);
}
@Override
- public void setAttenuation(ClientDTO clientDTO) {
-
- }
-
- /*@Override
- public boolean setAttenuation(int row, int col, int attenuation) {
- return false;
+ public String getDeviceType() {
+ return BoxConstants.DEVICE_TYPE_AERO;
}
@Override
- public int getAttenuation(int row, int col) {
- return 0;
+ protected ProtocolCodecFactory getCodecFactory() {
+ return null;
}
@Override
- public Boolean reset() {
+ protected AbstractVirtualBoxClientHandler getIoHandler() {
return null;
}
- @Override
- public int[][] getAll() {
- return new int[0][];
- }*/
- @Override
- public int getAttenuation(int col) {
- return 0;
- }
}
diff --git a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClientHandler.java b/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClientHandler.java
index 1ff972b..27816d8 100644
--- a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClientHandler.java
+++ b/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClientHandler.java
@@ -1,10 +1,7 @@
package com.example.mina.client.box.aeroflex;
import com.example.mina.client.base.AbstractVirtualBoxClientHandler;
-import com.example.mina.client.base.BaseReceiveMessage;
-import com.example.mina.client.base.SendMessage;
-import com.example.mina.client.entity.AbstractClientMessage;
-import com.example.mina.server.base.AbstractHardwareDataBuffer;
+import com.example.mina.client.base.BaseResponse;
/**
* @author dy
@@ -12,13 +9,10 @@ import com.example.mina.server.base.AbstractHardwareDataBuffer;
*/
public class AeroflexClientHandler extends AbstractVirtualBoxClientHandler {
- public AeroflexClientHandler(AbstractClientMessage clientMessage,
- AbstractHardwareDataBuffer abstractHardwareDataBuffer) {
- super(clientMessage, abstractHardwareDataBuffer);
- }
-
@Override
- protected boolean handleCommandResponse(SendMessage sendMessage, BaseReceiveMessage receiveMessage) {
+ public boolean handleCommandResponse(byte[] response) {
+
return false;
}
+
}
diff --git a/src/main/java/com/example/mina/client/box/lte3000/Lte3000ByteDecoder.java b/src/main/java/com/example/mina/client/box/lte3000/Lte3000ByteDecoder.java
deleted file mode 100644
index 415a53c..0000000
--- a/src/main/java/com/example/mina/client/box/lte3000/Lte3000ByteDecoder.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.example.mina.client.box.lte3000;
-
-import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.codec.ProtocolDecoder;
-import org.apache.mina.filter.codec.ProtocolDecoderAdapter;
-import org.apache.mina.filter.codec.ProtocolDecoderOutput;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author dy
- * @date 2021/3/3
- */
-public class Lte3000ByteDecoder extends ProtocolDecoderAdapter {
- //打印日志信息
- private final static Logger log = LoggerFactory
- .getLogger(ProtocolDecoder.class);
-
- @Override
- public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
- int limit = in.limit();
- byte[] bytes = new byte[limit];
-
- in.get(bytes);
-
- Lte3000ReceiveMessage receiveMessage = Lte3000ReceiveMessage.builder().receiveMessage(bytes).build();
-
- out.write(receiveMessage);
- }
-}
diff --git a/src/main/java/com/example/mina/client/box/lte3000/Lte3000ByteEnCoder.java b/src/main/java/com/example/mina/client/box/lte3000/Lte3000ByteEnCoder.java
deleted file mode 100644
index 2be5a0f..0000000
--- a/src/main/java/com/example/mina/client/box/lte3000/Lte3000ByteEnCoder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.example.mina.client.box.lte3000;
-
-import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.codec.ProtocolEncoder;
-import org.apache.mina.filter.codec.ProtocolEncoderAdapter;
-import org.apache.mina.filter.codec.ProtocolEncoderOutput;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author dy
- * @date 2021/3/3
- */
-public class Lte3000ByteEnCoder extends ProtocolEncoderAdapter {
- //用于打印日志信息
- private final static Logger log = LoggerFactory
- .getLogger(ProtocolEncoder.class);
-
- //编码 将数据包转成字节数组
- @Override
- public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception {
- byte[] bytes = (byte[]) message;
-
- IoBuffer buffer = IoBuffer.allocate(bytes.length);
- buffer.setAutoExpand(true);
-
- // 将数据放入缓冲IoBuffer
- buffer.put(bytes);
- // 写状态切换到读状态
- buffer.flip();
-
- out.write(buffer);
-// out.flush();
-//
-// buffer.free();
- }
-
-}
diff --git a/src/main/java/com/example/mina/client/box/lte3000/Lte3000ByteFactory.java b/src/main/java/com/example/mina/client/box/lte3000/Lte3000ByteFactory.java
deleted file mode 100644
index f9ba037..0000000
--- a/src/main/java/com/example/mina/client/box/lte3000/Lte3000ByteFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.example.mina.client.box.lte3000;
-
-import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.codec.ProtocolCodecFactory;
-import org.apache.mina.filter.codec.ProtocolDecoder;
-import org.apache.mina.filter.codec.ProtocolEncoder;
-
-/**
- * @author dy
- * @date 2021/3/3
- */
-public class Lte3000ByteFactory implements ProtocolCodecFactory {
- private final Lte3000ByteDecoder decoder;
- private final Lte3000ByteEnCoder encoder;
-
- //构造
- public Lte3000ByteFactory() {
- encoder = new Lte3000ByteEnCoder();
- decoder = new Lte3000ByteDecoder();
- }
-
- @Override
- public ProtocolDecoder getDecoder(IoSession arg0) throws Exception {
- // TODO Auto-generated method stub
- return decoder;
- }
-
- @Override
- public ProtocolEncoder getEncoder(IoSession arg0) throws Exception {
- // TODO Auto-generated method stub
- return encoder;
- }
-
-}
diff --git a/src/main/java/com/example/mina/client/box/lte3000/Lte3000Client.java b/src/main/java/com/example/mina/client/box/lte3000/Lte3000Client.java
index 23504fa..49d1e00 100644
--- a/src/main/java/com/example/mina/client/box/lte3000/Lte3000Client.java
+++ b/src/main/java/com/example/mina/client/box/lte3000/Lte3000Client.java
@@ -1,81 +1,31 @@
package com.example.mina.client.box.lte3000;
import com.example.mina.client.base.AbstractClient;
-import com.example.mina.client.entity.ClientDTO;
-import com.example.mina.client.entity.Command;
-import com.example.mina.client.entity.Lte3000Message;
-import com.example.mina.client.entity.ServerMessage;
-import com.example.mina.server.entity.Entry;
-import com.example.mina.server.entity.Lte3000DataBuffer;
-import com.example.mina.server.util.Lte3000CommandHelper;
+import com.example.mina.client.base.AbstractVirtualBoxClientHandler;
+import com.example.mina.client.base.BoxConnectConfig;
+import org.apache.mina.filter.codec.ProtocolCodecFactory;
/**
* @author dy
* @date 2021/3/10
*/
public class Lte3000Client extends AbstractClient {
-
- @Override
- protected void init() {
- ServerMessage serverMessage = serverService.getServerService(this.getClass().getSimpleName());
- hardwareDataBuffer = new Lte3000DataBuffer(32, 32, 30);
- abstractClientMessage = new Lte3000Message();
- abstractClientMessage.setServerMessage(serverMessage);
-
- for (int i = 0; i < this.hardwareDataBuffer.getMaxRow(); i++) {
- abstractClientMessage.getCommands().add(new Command("", Lte3000CommandHelper.genCommandGetCross(i + 1)));
- }
-
- // query attenuation
- // the LTE attenuation is bound to column
- for (int j = 0; j < this.hardwareDataBuffer.getMaxCol(); j++) {
- abstractClientMessage.getCommands().add(new Command("", Lte3000CommandHelper.genCommandGetAttn(j + 1)));
- }
- protocolCodecFactory = new Lte3000ByteFactory();
- abstractVirtualBoxClientHandler = new Lte3000ClientHandler(abstractClientMessage, hardwareDataBuffer);
+ public Lte3000Client(BoxConnectConfig connectConfig) {
+ super(connectConfig);
}
-
@Override
- public void setAttenuation(ClientDTO clientDTO) {
- byte[] cmd;
- if (clientDTO.getRow() == 0) {
- cmd = Lte3000CommandHelper.genCommandSetAttn(clientDTO.getCol(), clientDTO.getMaxAttn());
- } else {
- cmd = Lte3000CommandHelper.genCommandSetCross(clientDTO.getRow(), clientDTO.getCol());
- }
- ioSession.write(cmd);
- }
-
- public boolean isCrossPointOn(int row, int col) {
- return hardwareDataBuffer.getAttenuation(row, col) >= 1;
+ public String getDeviceType() {
+ return null;
}
@Override
- public int getAttenuation(int col) {
- return hardwareDataBuffer.getOffset(col);
- }
-
- public byte[] genCloseCommand(){
- return Lte3000CommandHelper.genCommandGetCross(1);
- }
-
- public Entry[][] getMatrix(){
- return hardwareDataBuffer.getMatrixData();
- }
-
- public Entry[] getOffsetData(){
- return hardwareDataBuffer.getOffsetData();
- }
-
- /*@Override
- public Boolean reset() {
+ protected AbstractVirtualBoxClientHandler getIoHandler() {
return null;
}
@Override
- public int[][] getAll() {
- return new int[0][];
- }*/
-
+ protected ProtocolCodecFactory getCodecFactory() {
+ return null;
+ }
}
diff --git a/src/main/java/com/example/mina/client/box/lte3000/Lte3000ClientHandler.java b/src/main/java/com/example/mina/client/box/lte3000/Lte3000ClientHandler.java
index d8296e6..c423558 100644
--- a/src/main/java/com/example/mina/client/box/lte3000/Lte3000ClientHandler.java
+++ b/src/main/java/com/example/mina/client/box/lte3000/Lte3000ClientHandler.java
@@ -1,9 +1,7 @@
package com.example.mina.client.box.lte3000;
import com.example.mina.client.base.AbstractVirtualBoxClientHandler;
-import com.example.mina.client.base.BaseReceiveMessage;
-import com.example.mina.client.base.SendMessage;
-import com.example.mina.client.entity.AbstractClientMessage;
+import com.example.mina.client.base.BaseRequest;
import com.example.mina.server.base.AbstractHardwareDataBuffer;
import com.example.mina.server.util.Lte3000CommandHelper;
import lombok.extern.slf4j.Slf4j;
@@ -14,26 +12,14 @@ import org.apache.mina.core.session.IoSession;
* @date 2021/3/10
*/
@Slf4j
-public class Lte3000ClientHandler extends AbstractVirtualBoxClientHandler {
-
- public Lte3000ClientHandler(AbstractClientMessage clientMessage,
- AbstractHardwareDataBuffer abstractHardwareDataBuffer) {
- super(clientMessage, abstractHardwareDataBuffer);
- }
-
- @Override
- public void sessionOpened(IoSession session) {
- super.sessionOpened(session);
- }
+public class Lte3000ClientHandler extends AbstractVirtualBoxClientHandler {
protected boolean isSameValue(byte value, int expect) {
return ((0xFF & value) == expect);
}
@Override
- protected boolean handleCommandResponse(SendMessage sendMessage, BaseReceiveMessage receiveMessage) {
- byte[] cmd = sendMessage.getSendMessage();
- byte[] response = receiveMessage.getReceiveMessage();
+ public boolean handleCommandResponse(byte[] response) {
int responseLen = response.length;
if (response[0] != Lte3000CommandHelper.ACK || responseLen < 6) {
return false;
@@ -44,14 +30,14 @@ public class Lte3000ClientHandler extends AbstractVirtualBoxClientHandler commands = new ArrayList<>();
-}
diff --git a/src/main/java/com/example/mina/client/entity/AeroflexMessage.java b/src/main/java/com/example/mina/client/entity/AeroflexMessage.java
deleted file mode 100644
index 317b3b9..0000000
--- a/src/main/java/com/example/mina/client/entity/AeroflexMessage.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.example.mina.client.entity;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.List;
-
-/**
- * @author dy
- * @date 2021/3/11
- */
-public class AeroflexMessage extends AbstractClientMessage{
-}
diff --git a/src/main/java/com/example/mina/client/entity/ClientDTO.java b/src/main/java/com/example/mina/client/entity/ClientDTO.java
deleted file mode 100644
index 3edebf3..0000000
--- a/src/main/java/com/example/mina/client/entity/ClientDTO.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.example.mina.client.entity;
-
-import lombok.Builder;
-import lombok.Data;
-
-/**
- * @author dy
- * @date 2021/3/12
- */
-@Data
-@Builder
-public class ClientDTO {
-
- private Integer row;
-
- private Integer col;
-
- private Integer maxAttn;
-
- private String description;
-
-}
diff --git a/src/main/java/com/example/mina/client/entity/Lte3000Message.java b/src/main/java/com/example/mina/client/entity/Lte3000Message.java
deleted file mode 100644
index 2539736..0000000
--- a/src/main/java/com/example/mina/client/entity/Lte3000Message.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.example.mina.client.entity;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * @author dy
- * @date 2021/3/11
- */
-public class Lte3000Message extends AbstractClientMessage{
-}
diff --git a/src/main/java/com/example/mina/client/entity/ServerMessage.java b/src/main/java/com/example/mina/client/entity/ServerMessage.java
deleted file mode 100644
index 1a553b3..0000000
--- a/src/main/java/com/example/mina/client/entity/ServerMessage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.example.mina.client.entity;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * @author dy
- * @date 2021/3/12
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
-public class ServerMessage {
-
- protected String host;
-
- protected int port;
-}
diff --git a/src/main/java/com/example/mina/client/service/ServerService.java b/src/main/java/com/example/mina/client/service/ServerService.java
deleted file mode 100644
index 4174d4c..0000000
--- a/src/main/java/com/example/mina/client/service/ServerService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.example.mina.client.service;
-
-import com.example.mina.client.entity.AbstractClientMessage;
-import com.example.mina.client.entity.ServerMessage;
-
-/**
- * @author dy
- * @date 2021/3/12
- */
-public interface ServerService {
- ServerMessage getServerService(String serverName);
-}
diff --git a/src/main/java/com/example/mina/client/service/impl/ServerServiceImpl.java b/src/main/java/com/example/mina/client/service/impl/ServerServiceImpl.java
deleted file mode 100644
index 426b8a3..0000000
--- a/src/main/java/com/example/mina/client/service/impl/ServerServiceImpl.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.example.mina.client.service.impl;
-
-import com.example.mina.client.entity.ServerMessage;
-import com.example.mina.client.service.ServerService;
-
-/**
- * @author dy
- * @date 2021/3/12
- */
-public class ServerServiceImpl implements ServerService {
-
- @Override
- public ServerMessage getServerService(String serverName) {
- // 根据服务器名称获取数据库ip,port
- // todo
- ServerMessage serverMessage = ServerMessage.builder()
- .host("localhost")
- .port(9102)
- .build();
- return serverMessage;
- }
-}
diff --git a/src/main/java/com/example/mina/client/test/MinaClient.java b/src/main/java/com/example/mina/client/test/MinaClient.java
deleted file mode 100644
index b04bc10..0000000
--- a/src/main/java/com/example/mina/client/test/MinaClient.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.example.mina.client.test;
-
-import com.example.mina.client.box.lte3000.Lte3000Client;
-import com.example.mina.client.entity.ClientDTO;
-import com.example.mina.server.entity.Entry;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-@Controller
-@RequestMapping("/client")
-@ResponseBody
-public class MinaClient {
-
- @RequestMapping("/isCrossPointOn")
- public void index() {
- ClientDTO clientDTO = ClientDTO.builder().row(2).col(3).maxAttn(5).build();
- Lte3000Client lte3000Client = new Lte3000Client();
- lte3000Client.start(clientDTO);
-
- boolean a = lte3000Client.isCrossPointOn(clientDTO.getRow(),clientDTO.getCol());
- System.out.println(a);
- }
-
- public static void main(String[] args) {
-
- ClientDTO clientDTO = ClientDTO.builder().row(2).col(3).maxAttn(5).build();
- Lte3000Client lte3000Client = new Lte3000Client();
- lte3000Client.start(clientDTO);
-
- boolean a = lte3000Client.isCrossPointOn(clientDTO.getRow(),clientDTO.getCol());
- int c = lte3000Client.getAttenuation(clientDTO.getCol());
- byte[] bytes = lte3000Client.genCloseCommand();
- Entry[][] entries =lte3000Client.getMatrix();
- Entry[] entry =lte3000Client.getOffsetData();
- int q = lte3000Client.getAttenuation(clientDTO.getCol());
- clientDTO.setRow(0);
- lte3000Client.setAttenuation(clientDTO);
- int w = lte3000Client.getAttenuation(clientDTO.getCol());
-
-
- }
-}
--
libgit2 0.21.2