From f68aa9c84132ae69ae575de5ebebf4dce8a02bf0 Mon Sep 17 00:00:00 2001 From: 杜云山 <870666625@qq.com> Date: Fri, 5 Mar 2021 17:09:11 +0800 Subject: [PATCH] feat: 完成 AeroflexVirtualBox --- pom.xml | 62 +++++++++++++++++++++----------------------------------------- src/main/java/com/example/mina/Application.java | 4 ++++ src/main/java/com/example/mina/base/AbstractHardwareDataBuffer.java | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/example/mina/base/AbstractVirtualBoxHandler.java | 17 +++++------------ src/main/java/com/example/mina/base/AeroflexDataBuffer.java | 27 --------------------------- src/main/java/com/example/mina/base/Entry.java | 60 ------------------------------------------------------------ src/main/java/com/example/mina/base/HardwareDataBuffer.java | 86 -------------------------------------------------------------------------------------- src/main/java/com/example/mina/box1/AeroflexVirtualBoxHandler.java | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/example/mina/box1/Box1Decoder.java | 9 --------- src/main/java/com/example/mina/box1/Box1Encoder.java | 9 --------- src/main/java/com/example/mina/box1/Box1Handler.java | 139 ------------------------------------------------------------------------------------------------------------------------------------------- src/main/java/com/example/mina/config/AeroflexVirtualBoxConfiguration.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/example/mina/config/Box1Configuration.java | 48 ------------------------------------------------ src/main/java/com/example/mina/config/Box2Configuration.java | 9 --------- src/main/java/com/example/mina/entity/AeroflexDataBuffer.java | 29 +++++++++++++++++++++++++++++ src/main/java/com/example/mina/entity/AttenuationVO.java | 9 --------- src/main/java/com/example/mina/entity/Entry.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/example/mina/entity/Message.java | 9 --------- src/main/java/com/example/mina/property/AeroflexVirtualProperties.java | 26 ++++++++++++++++++++++++++ src/main/java/com/example/mina/util/StrUtil.java | 37 +++++++++++++------------------------ src/main/resources/application.yml | 16 +++------------- src/main/resources/templates/index.html | 10 ---------- src/main/resources/templates/views/level1/1.html | 10 ---------- src/main/resources/templates/views/level1/2.html | 10 ---------- src/main/resources/templates/views/level1/3.html | 10 ---------- src/main/resources/templates/views/level2/1.html | 10 ---------- src/main/resources/templates/views/level2/2.html | 10 ---------- src/main/resources/templates/views/level2/3.html | 10 ---------- src/main/resources/templates/views/level3/1.html | 10 ---------- src/main/resources/templates/views/level3/2.html | 10 ---------- src/main/resources/templates/views/level3/3.html | 10 ---------- src/main/resources/templates/views/login.html | 10 ---------- 32 files changed, 442 insertions(+), 605 deletions(-) create mode 100644 src/main/java/com/example/mina/base/AbstractHardwareDataBuffer.java delete mode 100644 src/main/java/com/example/mina/base/AeroflexDataBuffer.java delete mode 100644 src/main/java/com/example/mina/base/Entry.java delete mode 100644 src/main/java/com/example/mina/base/HardwareDataBuffer.java create mode 100644 src/main/java/com/example/mina/box1/AeroflexVirtualBoxHandler.java delete mode 100644 src/main/java/com/example/mina/box1/Box1Decoder.java delete mode 100644 src/main/java/com/example/mina/box1/Box1Encoder.java delete mode 100644 src/main/java/com/example/mina/box1/Box1Handler.java create mode 100644 src/main/java/com/example/mina/config/AeroflexVirtualBoxConfiguration.java delete mode 100644 src/main/java/com/example/mina/config/Box1Configuration.java delete mode 100644 src/main/java/com/example/mina/config/Box2Configuration.java create mode 100644 src/main/java/com/example/mina/entity/AeroflexDataBuffer.java delete mode 100644 src/main/java/com/example/mina/entity/AttenuationVO.java create mode 100644 src/main/java/com/example/mina/entity/Entry.java delete mode 100644 src/main/java/com/example/mina/entity/Message.java create mode 100644 src/main/java/com/example/mina/property/AeroflexVirtualProperties.java delete mode 100644 src/main/resources/templates/index.html delete mode 100644 src/main/resources/templates/views/level1/1.html delete mode 100644 src/main/resources/templates/views/level1/2.html delete mode 100644 src/main/resources/templates/views/level1/3.html delete mode 100644 src/main/resources/templates/views/level2/1.html delete mode 100644 src/main/resources/templates/views/level2/2.html delete mode 100644 src/main/resources/templates/views/level2/3.html delete mode 100644 src/main/resources/templates/views/level3/1.html delete mode 100644 src/main/resources/templates/views/level3/2.html delete mode 100644 src/main/resources/templates/views/level3/3.html delete mode 100644 src/main/resources/templates/views/login.html diff --git a/pom.xml b/pom.xml index 8b25934..98d68bf 100644 --- a/pom.xml +++ b/pom.xml @@ -5,21 +5,34 @@ org.springframework.boot spring-boot-starter-parent - 2.2.11.RELEASE + 2.4.3 - com.example - demo + com.peony + virtual-box 0.0.1-SNAPSHOT mina - Demo project for Spring Boot + 1.8 + + org.springframework.boot - spring-boot-starter-web + spring-boot-starter + + + + org.springframework.boot + spring-boot-configuration-processor + + + + org.apache.mina + mina-core + 2.1.4 @@ -28,11 +41,14 @@ runtime true + org.projectlombok lombok + provided true + org.springframework.boot spring-boot-starter-test @@ -44,42 +60,6 @@ - - - org.springframework.boot - spring-boot-starter-thymeleaf - - - - org.springframework.boot - spring-boot-starter-security - - - - - org.springframework.boot - spring-boot-starter-amqp - - - - - org.springframework.statemachine - spring-statemachine-core - 1.2.0.RELEASE - - - - - org.apache.mina - mina-core - 2.1.3 - - - org.apache.mina - mina-integration-spring - 1.1.7 - - diff --git a/src/main/java/com/example/mina/Application.java b/src/main/java/com/example/mina/Application.java index 4208ee5..96bc251 100644 --- a/src/main/java/com/example/mina/Application.java +++ b/src/main/java/com/example/mina/Application.java @@ -3,6 +3,10 @@ package com.example.mina; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +/** + * @author 杜云山 + * @date 2021/03/05 + */ @SpringBootApplication public class Application { diff --git a/src/main/java/com/example/mina/base/AbstractHardwareDataBuffer.java b/src/main/java/com/example/mina/base/AbstractHardwareDataBuffer.java new file mode 100644 index 0000000..025836f --- /dev/null +++ b/src/main/java/com/example/mina/base/AbstractHardwareDataBuffer.java @@ -0,0 +1,92 @@ +package com.example.mina.base; + +import com.example.mina.entity.Entry; + +/** + * @author 杜云山 + * @date 2021/03/05 + */ +public abstract class AbstractHardwareDataBuffer { + + protected int maxRow; + + protected int maxCol; + + protected int maxOffset; + + protected int maxAttenuate; + + protected Entry[][] matrixData; + + protected Entry[] offsetData; + + public AbstractHardwareDataBuffer() { + } + + public AbstractHardwareDataBuffer(int row, int col, int offset, int maxAttenuate) { + this.maxRow = row; + this.maxCol = col; + this.maxOffset = offset; + this.maxAttenuate = maxAttenuate; + } + + /** + * Set cross point attenuation value. Actually that is not correct. + * In case of LTE device, this is a ON/OFF status (0,1) + * + * @param row the row index. *** starts from 1 *** + * @param col the col index. *** starts from 1 *** + * @param val the attenuation value + */ + public synchronized void setAttenuation(int row, int col, int val) { + + if (val != -1 && (row < 1 || row > maxRow || col < 1 || col > maxCol)) { + return; + } + if (val == -1) { + val = maxAttenuate; + } + matrixData[row - 1][col - 1] = new Entry(row - 1, col - 1, "rr", val, false); + ; + } + + public int getAttenuation(int row, int col) { + return matrixData[row - 1][col - 1].getValue(); + } + + public synchronized void setOffset(int row, int val) { + if (row < 1 || row > maxOffset) { + return; + } + offsetData[row - 1] = new Entry(row - 1, 0, "rr", val, false); + } + + public int getOffset(int row) { + return offsetData[row - 1].getValue(); + } + + public Entry[] getOffsetData() { + return offsetData; + } + + public Entry[][] getMatrixData() { + return matrixData; + } + + public int getMaxRow() { + return maxRow; + } + + public int getMaxCol() { + return maxCol; + } + + public int getMaxOffset() { + return maxOffset; + } + + public int getMaxAttenuate() { + return maxAttenuate; + } + +} diff --git a/src/main/java/com/example/mina/base/AbstractVirtualBoxHandler.java b/src/main/java/com/example/mina/base/AbstractVirtualBoxHandler.java index 6758f92..f4fbe3a 100644 --- a/src/main/java/com/example/mina/base/AbstractVirtualBoxHandler.java +++ b/src/main/java/com/example/mina/base/AbstractVirtualBoxHandler.java @@ -9,24 +9,17 @@ import org.apache.mina.core.service.IoHandlerAdapter; public abstract class AbstractVirtualBoxHandler extends IoHandlerAdapter { /** - * 存储衰减值的矩阵 - */ - protected int[][] matrix; - - protected int type; - - protected int row = 10; - - protected int maxAttenuate = 99; - - /** * 初始化矩阵以及该设备的一些参数 */ protected abstract void initMatrix(); /** * 处理消息 + * + * @param cmd 指令数据 + * @param len 数据长度 + * @return 返回消息 */ - protected abstract void handleMessage(); + protected abstract byte[] handleMessage(byte[] cmd, int len); } diff --git a/src/main/java/com/example/mina/base/AeroflexDataBuffer.java b/src/main/java/com/example/mina/base/AeroflexDataBuffer.java deleted file mode 100644 index 89a46f2..0000000 --- a/src/main/java/com/example/mina/base/AeroflexDataBuffer.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.example.mina.base; - -/** - * @author 杜云山 - * @date 2021/03/05 - */ -public class AeroflexDataBuffer extends HardwareDataBuffer { - - public AeroflexDataBuffer(int row, int maxAtten) { - super(row, row, row, maxAtten); - - matrix_data = new Entry[row][row]; - offset_data = new Entry[row]; - - for (int i = 0; i < row; i++) { - for (int k = 0; k < row; k++) { - matrix_data[i][k] = new Entry(i, k, "kk", maxAtten, false); - } - } - - for (int i = 0; i < row; i++) { - offset_data[i] = new Entry(i, 0, "rr", maxAtten, false); - } - - } - -} diff --git a/src/main/java/com/example/mina/base/Entry.java b/src/main/java/com/example/mina/base/Entry.java deleted file mode 100644 index b87c3e5..0000000 --- a/src/main/java/com/example/mina/base/Entry.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.example.mina.base; - -/** - * @author 杜云山 - * @date 2021/03/05 - */ -public class Entry { - - private final int row; - - private final int col; - - private final String name; - - private int value; - - private final boolean booked; - - private final long timestamp; - - public static final Entry EMPTY = new Entry(0, 0, null, 0, false); - - public Entry(int row, int col, String name, int value, boolean booked) { - this.row = row; - this.col = col; - this.name = name; - this.value = value; - this.booked = booked; - this.timestamp = System.nanoTime(); - } - - public int getRow() { - return row; - } - - public int getCol() { - return col; - } - - public String getName() { - return name; - } - - public int getValue() { - return value; - } - - public boolean isBooked() { - return booked; - } - - public void setValue(int v) { - this.value = v; - } - - public long getTimestamp() { - return this.timestamp; - } - -} diff --git a/src/main/java/com/example/mina/base/HardwareDataBuffer.java b/src/main/java/com/example/mina/base/HardwareDataBuffer.java deleted file mode 100644 index a7ce176..0000000 --- a/src/main/java/com/example/mina/base/HardwareDataBuffer.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.example.mina.base; - -public class HardwareDataBuffer { - - protected int maxRow; - protected int maxCol; - protected int maxOffset; - - protected int maxAtten; - - - protected Entry[][] matrix_data; - protected Entry[] offset_data; - - public HardwareDataBuffer() {} - - public HardwareDataBuffer(int row, int col, int offset, int maxAtten){ - this.maxRow = row; - this.maxCol = col; - this.maxOffset = offset; - this.maxAtten = maxAtten; - } - - - /** - * Set cross point attenuation value. Actually that is not correct. - * In case of LTE device, this is a ON/OFF status (0,1) - * - * @param row the row index. *** starts from 1 *** - * @param col the col index. *** starts from 1 *** - * @param val the attenuation value - */ - public synchronized void setAttenuation(int row, int col, int val){ - - if(val != -1 && (row < 1 || row > maxRow || col < 1 || col > maxCol)) { - //Logger.atError().log("HardwareDataBuffer: setAttenuation(int row, int col, int val) " + row + "/" + col + "/" + val); - return; - } - if(val == -1) val = maxAtten; - matrix_data[row - 1][col -1 ] = new Entry(row -1 , col -1 , "rr", val, false);; - } - - - public int getAttenuation(int row, int col){ - return matrix_data[row - 1][col -1 ].getValue(); - } - - public synchronized void setOffset(int row,int val){ - if(row < 1 || row > maxOffset){ - //rfmazeLogger.atError().log("HardwareDataBuffer: setOffset(int row, int val) " + row + "/" + val); - return; - } - offset_data[row - 1] = new Entry(row -1 , 0 , "rr", val, false);; - } - - public int getOffset(int row){ - return offset_data[row - 1].getValue(); - } - - - public Entry[] getOffset_data() { - return offset_data; - } - - public Entry[][] getMatrix_data() { - return matrix_data; - } - - public int getMaxRow(){ - return maxRow; - } - - public int getMaxCol(){ - return maxCol; - } - - public int getMaxOffset() { - return maxOffset; - } - - public int getMaxAtten() { - return maxAtten; - } - - -} diff --git a/src/main/java/com/example/mina/box1/AeroflexVirtualBoxHandler.java b/src/main/java/com/example/mina/box1/AeroflexVirtualBoxHandler.java new file mode 100644 index 0000000..4424c26 --- /dev/null +++ b/src/main/java/com/example/mina/box1/AeroflexVirtualBoxHandler.java @@ -0,0 +1,139 @@ +package com.example.mina.box1; + +import com.example.mina.base.AbstractVirtualBoxHandler; +import com.example.mina.entity.AeroflexDataBuffer; +import com.example.mina.util.StrUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.mina.core.buffer.IoBuffer; +import org.apache.mina.core.session.IoSession; + +/** + * @author 杜云山 + * @date 21/03/05 + */ +@Slf4j +public class AeroflexVirtualBoxHandler extends AbstractVirtualBoxHandler { + + private static final byte[] ERROR = "ERROR".getBytes(); + + private static final byte[] NONE = "OK".getBytes(); + + private static final String SET_ALL = "ATTN ALL MAX"; + + private static final String SET_ONE = "ATTN"; + + private static final String GET_ONE = "ATTN?"; + + private static final String SPACE_SPLIT = " "; + + private static final String SEMICOLON_SPLIT = ";"; + + private AeroflexDataBuffer dataBuffer; + + public AeroflexVirtualBoxHandler() { + this.initMatrix(); + } + + @Override + protected void initMatrix() { + + int row = 10; + int col = 1; + int maxAttenuate = 888; + + dataBuffer = new AeroflexDataBuffer(row, maxAttenuate); + } + + @Override + public void messageReceived(IoSession session, Object message) { + + IoBuffer ioBuffer = (IoBuffer) message; + byte[] bytes = ioBuffer.array(); + + byte[] result = handleMessage(bytes, bytes.length); + + session.write(IoBuffer.wrap(result)); + } + + @Override + protected byte[] handleMessage(byte[] cmd, int len) { + String command = new String(cmd).trim(); + + log.info("aeroflexVirtualBoxHandler receive: {}", command); + + if (command.startsWith(SET_ALL)) { + //set all to max + for (int i = 1; i < dataBuffer.getMaxRow(); i++) { + dataBuffer.setOffset(i, dataBuffer.getMaxAttenuate()); + } + + return NONE; + } else if (command.startsWith(GET_ONE)) { + //get + String[] sss = command.split(SPACE_SPLIT); + if (sss.length >= 2) { + + int row = StrUtil.toInt(sss[1]); + if (row >= 0 && row <= dataBuffer.getMaxRow()) { + String str = String.valueOf(dataBuffer.getOffset(row)); + log.info("aeroflexVirtualBoxHandler return: {}", str); + return str.getBytes(); + } + } + return ERROR; + + } else if (command.startsWith(SET_ONE)) { + //Set, Follow by ATTN? + String[] aa = command.split(SEMICOLON_SPLIT); + + String[] sss = aa[0].split(SPACE_SPLIT); + + if (sss.length >= 3) { + + int row = StrUtil.toInt(sss[1]); + int val = StrUtil.toInt(sss[2]); + + if (row >= 0 && row <= dataBuffer.getMaxRow()) { + if (val >= 0 && val <= dataBuffer.getMaxAttenuate()) { + dataBuffer.setOffset(row, val); + + String str = String.valueOf(dataBuffer.getOffset(row)); + log.info("aeroflexVirtualBoxHandler return =====> {}", str); + return str.getBytes(); + } + } + } + + return ERROR; + + } else { + return ERROR; + } + + } + + @Override + public void sessionCreated(IoSession session) { + + log.info("--- abstractVirtual server session created"); + } + + @Override + public void sessionOpened(IoSession session) { + + log.info("--- abstractVirtual server session Opened"); + } + + @Override + public void sessionClosed(IoSession session) { + + log.info("--- abstractVirtual server session Closed"); + } + + @Override + public void messageSent(IoSession session, Object message) { + + log.info("--- abstractVirtual 发送数据成功!{}", message); + } + +} diff --git a/src/main/java/com/example/mina/box1/Box1Decoder.java b/src/main/java/com/example/mina/box1/Box1Decoder.java deleted file mode 100644 index 20c272c..0000000 --- a/src/main/java/com/example/mina/box1/Box1Decoder.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.example.mina.box1; - -/** - * @author 杜云山 - * @date 21/03/05 - */ -public class Box1Decoder { - -} diff --git a/src/main/java/com/example/mina/box1/Box1Encoder.java b/src/main/java/com/example/mina/box1/Box1Encoder.java deleted file mode 100644 index a397fc6..0000000 --- a/src/main/java/com/example/mina/box1/Box1Encoder.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.example.mina.box1; - -/** - * @author 杜云山 - * @date 21/03/05 - */ -public class Box1Encoder { - -} diff --git a/src/main/java/com/example/mina/box1/Box1Handler.java b/src/main/java/com/example/mina/box1/Box1Handler.java deleted file mode 100644 index 8336055..0000000 --- a/src/main/java/com/example/mina/box1/Box1Handler.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.example.mina.box1; - -import com.example.mina.base.AbstractVirtualBoxHandler; -import com.example.mina.base.AeroflexDataBuffer; -import com.example.mina.util.StrUtil; -import lombok.extern.slf4j.Slf4j; -import org.apache.mina.core.buffer.IoBuffer; -import org.apache.mina.core.session.IoSession; - -/** - * @author 杜云山 - * @date 21/03/05 - */ -@Slf4j -public class Box1Handler extends AbstractVirtualBoxHandler { - - - private static final byte[] ERROR = "ERROR".getBytes(); - - private static final byte[] NONE = "OK".getBytes(); - - private AeroflexDataBuffer dataBuffer; - - public Box1Handler() { - this.initMatrix(); - } - - @Override - protected void initMatrix() { - - int row = 10; - int col = 1; - int maxAtten = 888; - - dataBuffer = new AeroflexDataBuffer(row, maxAtten); - } - - @Override - protected void handleMessage() { - - } - - @Override - public void messageReceived(IoSession session, Object message) { - - IoBuffer ioBuffer = (IoBuffer) message; - byte[] bytes = new byte[ioBuffer.limit()]; - ioBuffer.get(bytes, ioBuffer.position(), ioBuffer.limit()); - - byte[] result = handleCommand(bytes, bytes.length); - - session.write(IoBuffer.wrap(result)); - } - - @Override - public void sessionCreated(IoSession session) { - - log.info("---server session created"); - } - - @Override - public void sessionOpened(IoSession session) { - - log.info("---server session Opened"); - } - - @Override - public void sessionClosed(IoSession session) { - - log.info("---server session Closed"); - } - - @Override - public void messageSent(IoSession session, Object message) { - - log.info("---发送数据成功了。。。{}", message); - } - - - protected byte[] handleCommand(byte[] cmd, int len) { - String command = new String(cmd).trim(); - -// LogUtils.println("AeroflexVirtualBoxService::handleCommand receive : ", command); - - if (command.startsWith("ATTN ALL MAX")) {//set all to max - for (int i = 1; i < dataBuffer.getMaxRow(); i++) { - dataBuffer.setOffset(i, dataBuffer.getMaxAtten()); - } - - return NONE; - } else if (command.startsWith("ATTN?")) {//get - String[] sss = command.split(" "); - if (sss.length >= 2) { -// LogUtils.println(sss[0], sss[1]); - - int row = StrUtil.toInt(sss[1]); - if (row >= 0 && row <= dataBuffer.getMaxRow()) { - String str = String.valueOf(dataBuffer.getOffset(row)); -// LogUtils.println("AeroflexVirtualBoxService::handleCommand return : ", str); - return str.getBytes(); - } - } - - return ERROR; - } else if (command.startsWith("ATTN")) {//Set, Follow by ATTN? -// LogUtils.println("command.startsWith(\"ATTN\")"); - String[] aa = command.split(";"); - -// LogUtils.println(aa[0], aa[1]); - - String[] sss = aa[0].split(" "); - StrUtil.printArray(sss); - - if (sss.length >= 3) { - int row = StrUtil.toInt(sss[1]); - int val = StrUtil.toInt(sss[2]); - - System.out.println(row + "/" + val); - - if (row >= 0 && row <= dataBuffer.getMaxRow()) { - if (val >= 0 && val <= dataBuffer.getMaxAtten()) { - dataBuffer.setOffset(row, val); - - String str = String.valueOf(dataBuffer.getOffset(row)); -// LogUtils.println("handleCommand return =====> ", str); - return str.getBytes(); - } - } - } - - return ERROR; - - } else { - return ERROR; - } - - } - -} diff --git a/src/main/java/com/example/mina/config/AeroflexVirtualBoxConfiguration.java b/src/main/java/com/example/mina/config/AeroflexVirtualBoxConfiguration.java new file mode 100644 index 0000000..13737e9 --- /dev/null +++ b/src/main/java/com/example/mina/config/AeroflexVirtualBoxConfiguration.java @@ -0,0 +1,50 @@ +package com.example.mina.config; + +import com.example.mina.box1.AeroflexVirtualBoxHandler; +import com.example.mina.property.AeroflexVirtualProperties; +import lombok.extern.slf4j.Slf4j; +import org.apache.mina.transport.socket.nio.NioSocketAcceptor; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.PostConstruct; +import java.net.InetSocketAddress; + +/** + * @author 杜云山 + * @date 21/03/05 + */ +@Slf4j +@Configuration(proxyBeanMethods = false) +public class AeroflexVirtualBoxConfiguration { + + private final AeroflexVirtualProperties aeroflexVirtualProperties; + + public AeroflexVirtualBoxConfiguration(AeroflexVirtualProperties aeroflexVirtualProperties) { + this.aeroflexVirtualProperties = aeroflexVirtualProperties; + } + + @PostConstruct + public void init() { + + if (!aeroflexVirtualProperties.getEnable()) { + log.info("AeroflexVirtual服务端 配置未开启"); + return; + } + + if (aeroflexVirtualProperties.getPort() == null) { + log.info("AeroflexVirtual服务端 端口未配置"); + return; + } + + try { + NioSocketAcceptor acceptor = new NioSocketAcceptor(); + acceptor.setHandler(new AeroflexVirtualBoxHandler()); + acceptor.setReuseAddress(true); + acceptor.bind(new InetSocketAddress(aeroflexVirtualProperties.getPort())); + log.info("AeroflexVirtual服务端已经启动,监听端口: {}", aeroflexVirtualProperties.getPort()); + } catch (Exception e) { + log.error("无法启动AeroflexVirtual服务端, {}", e.getMessage(), e); + } + } + +} diff --git a/src/main/java/com/example/mina/config/Box1Configuration.java b/src/main/java/com/example/mina/config/Box1Configuration.java deleted file mode 100644 index 0b13a2a..0000000 --- a/src/main/java/com/example/mina/config/Box1Configuration.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.example.mina.config; - -import com.example.mina.box1.Box1Handler; -import lombok.extern.slf4j.Slf4j; -import org.apache.mina.core.service.IoAcceptor; -import org.apache.mina.transport.socket.nio.NioSocketAcceptor; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.io.IOException; -import java.net.InetSocketAddress; - -/** - * @author 杜云山 - * @date 21/03/05 - */ -@Slf4j -@Configuration -public class Box1Configuration { - - /** - * 开启mina的server服务 - */ - @Bean - public IoAcceptor ioAcceptor() throws IOException { - - NioSocketAcceptor acceptor = new NioSocketAcceptor(); - acceptor.setHandler(new Box1Handler()); - acceptor.setReuseAddress(true); - acceptor.bind(new InetSocketAddress(9090)); - - return acceptor; - - } - - @Bean - public IoAcceptor ioAcceptor999() throws IOException { - - NioSocketAcceptor acceptor = new NioSocketAcceptor(); - acceptor.setHandler(new Box1Handler()); - acceptor.setReuseAddress(true); - acceptor.bind(new InetSocketAddress(9999)); - - return acceptor; - - } - -} diff --git a/src/main/java/com/example/mina/config/Box2Configuration.java b/src/main/java/com/example/mina/config/Box2Configuration.java deleted file mode 100644 index 8890df0..0000000 --- a/src/main/java/com/example/mina/config/Box2Configuration.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.example.mina.config; - -/** - * @author 杜云山 - * @date 21/03/05 - */ -public class Box2Configuration { - -} diff --git a/src/main/java/com/example/mina/entity/AeroflexDataBuffer.java b/src/main/java/com/example/mina/entity/AeroflexDataBuffer.java new file mode 100644 index 0000000..ecc6606 --- /dev/null +++ b/src/main/java/com/example/mina/entity/AeroflexDataBuffer.java @@ -0,0 +1,29 @@ +package com.example.mina.entity; + +import com.example.mina.base.AbstractHardwareDataBuffer; + +/** + * @author 杜云山 + * @date 2021/03/05 + */ +public class AeroflexDataBuffer extends AbstractHardwareDataBuffer { + + public AeroflexDataBuffer(int row, int maxAtten) { + super(row, row, row, maxAtten); + + matrixData = new Entry[row][row]; + offsetData = new Entry[row]; + + for (int i = 0; i < row; i++) { + for (int k = 0; k < row; k++) { + matrixData[i][k] = new Entry(i, k, "kk", maxAtten, false); + } + } + + for (int i = 0; i < row; i++) { + offsetData[i] = new Entry(i, 0, "rr", maxAtten, false); + } + + } + +} diff --git a/src/main/java/com/example/mina/entity/AttenuationVO.java b/src/main/java/com/example/mina/entity/AttenuationVO.java deleted file mode 100644 index aa7e766..0000000 --- a/src/main/java/com/example/mina/entity/AttenuationVO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.example.mina.entity; - -/** - * @author 杜云山 - * @date 21/03/05 - */ -public class AttenuationVO { - -} diff --git a/src/main/java/com/example/mina/entity/Entry.java b/src/main/java/com/example/mina/entity/Entry.java new file mode 100644 index 0000000..64d251a --- /dev/null +++ b/src/main/java/com/example/mina/entity/Entry.java @@ -0,0 +1,60 @@ +package com.example.mina.entity; + +/** + * @author 杜云山 + * @date 2021/03/05 + */ +public class Entry { + + private final int row; + + private final int col; + + private final String name; + + private int value; + + private final boolean booked; + + private final long timestamp; + + public static final Entry EMPTY = new Entry(0, 0, null, 0, false); + + public Entry(int row, int col, String name, int value, boolean booked) { + this.row = row; + this.col = col; + this.name = name; + this.value = value; + this.booked = booked; + this.timestamp = System.nanoTime(); + } + + public int getRow() { + return row; + } + + public int getCol() { + return col; + } + + public String getName() { + return name; + } + + public int getValue() { + return value; + } + + public boolean isBooked() { + return booked; + } + + public void setValue(int v) { + this.value = v; + } + + public long getTimestamp() { + return this.timestamp; + } + +} diff --git a/src/main/java/com/example/mina/entity/Message.java b/src/main/java/com/example/mina/entity/Message.java deleted file mode 100644 index 8f5463a..0000000 --- a/src/main/java/com/example/mina/entity/Message.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.example.mina.entity; - -/** - * @author 杜云山 - * @date 21/03/05 - */ -public class Message { - -} diff --git a/src/main/java/com/example/mina/property/AeroflexVirtualProperties.java b/src/main/java/com/example/mina/property/AeroflexVirtualProperties.java new file mode 100644 index 0000000..b433e5b --- /dev/null +++ b/src/main/java/com/example/mina/property/AeroflexVirtualProperties.java @@ -0,0 +1,26 @@ +package com.example.mina.property; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @author 杜云山 + * @date 2021/03/05 + */ +@Getter +@Setter +@ToString +@ConfigurationProperties(prefix = "aeroflex-virtual") +@Configuration +@EnableConfigurationProperties(AeroflexVirtualProperties.class) +public class AeroflexVirtualProperties { + + private Boolean enable = false; + + private Integer port = null; + +} \ No newline at end of file diff --git a/src/main/java/com/example/mina/util/StrUtil.java b/src/main/java/com/example/mina/util/StrUtil.java index f771ee3..e9b7bdd 100644 --- a/src/main/java/com/example/mina/util/StrUtil.java +++ b/src/main/java/com/example/mina/util/StrUtil.java @@ -1,15 +1,13 @@ package com.example.mina.util; -public class StrUtil { - - private static final String[] EMPTY_ARRAY = new String[0]; - - public static void main(String[] args) { - System.out.println(toInt("93")); +import lombok.extern.slf4j.Slf4j; -// System.out.println(parseCommaInts("2a")); - - } +/** + * @author 杜云山 + * @date 2021/03/05 + */ +@Slf4j +public class StrUtil { public static int[] parseCommaInts(String str) { if (str == null) { @@ -43,32 +41,23 @@ public class StrUtil { return ids; } - public static int toInt(String s) { - if (isEmpty(s)) { + public static int toInt(String str) { + if (isEmpty(str)) { return -1; } try { - float f = Float.parseFloat(s.trim()); + float f = Float.parseFloat(str.trim()); return (int) f; } catch (Exception e) { - e.printStackTrace(); + log.error("{}, 无法转换为数字", str, e); return -1; } } - public static void printArray(String[] ssss) { - if (ssss == null) { - System.out.println(" -- NULL --"); - } - for (String s : ssss) { - System.out.println(s); - } - } - - public static boolean isEmpty(String s) { - return s == null || s.trim().isEmpty(); + public static boolean isEmpty(String str) { + return str == null || str.trim().isEmpty(); } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e26c199..f9ef37a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,13 +1,3 @@ -server: - port: 8080 - servlet: - context-path: /test - -# rabbitmq配置 - #spring: - # rabbitmq: - # host: localhost - # port: 5672 - # username: guest - # password: guest - # virtual-host: / \ No newline at end of file +aeroflex-virtual: + enable: true + port: 9100 \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html deleted file mode 100644 index ea8c29e..0000000 --- a/src/main/resources/templates/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是首页
- - \ No newline at end of file diff --git a/src/main/resources/templates/views/level1/1.html b/src/main/resources/templates/views/level1/1.html deleted file mode 100644 index eeceebe..0000000 --- a/src/main/resources/templates/views/level1/1.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是level1-1
- - \ No newline at end of file diff --git a/src/main/resources/templates/views/level1/2.html b/src/main/resources/templates/views/level1/2.html deleted file mode 100644 index 7960ba5..0000000 --- a/src/main/resources/templates/views/level1/2.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是level1-2
- - \ No newline at end of file diff --git a/src/main/resources/templates/views/level1/3.html b/src/main/resources/templates/views/level1/3.html deleted file mode 100644 index 16440b0..0000000 --- a/src/main/resources/templates/views/level1/3.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是level1-3
- - \ No newline at end of file diff --git a/src/main/resources/templates/views/level2/1.html b/src/main/resources/templates/views/level2/1.html deleted file mode 100644 index 61ec2dc..0000000 --- a/src/main/resources/templates/views/level2/1.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是level2-1
- - \ No newline at end of file diff --git a/src/main/resources/templates/views/level2/2.html b/src/main/resources/templates/views/level2/2.html deleted file mode 100644 index f7ad359..0000000 --- a/src/main/resources/templates/views/level2/2.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是level2-2
- - \ No newline at end of file diff --git a/src/main/resources/templates/views/level2/3.html b/src/main/resources/templates/views/level2/3.html deleted file mode 100644 index c10d99a..0000000 --- a/src/main/resources/templates/views/level2/3.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是level2-3
- - \ No newline at end of file diff --git a/src/main/resources/templates/views/level3/1.html b/src/main/resources/templates/views/level3/1.html deleted file mode 100644 index 62267d3..0000000 --- a/src/main/resources/templates/views/level3/1.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是level3-1
- - \ No newline at end of file diff --git a/src/main/resources/templates/views/level3/2.html b/src/main/resources/templates/views/level3/2.html deleted file mode 100644 index dbb1d0f..0000000 --- a/src/main/resources/templates/views/level3/2.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是level3-2
- - \ No newline at end of file diff --git a/src/main/resources/templates/views/level3/3.html b/src/main/resources/templates/views/level3/3.html deleted file mode 100644 index e46cd4d..0000000 --- a/src/main/resources/templates/views/level3/3.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是level3-3
- - \ No newline at end of file diff --git a/src/main/resources/templates/views/login.html b/src/main/resources/templates/views/login.html deleted file mode 100644 index edb2a10..0000000 --- a/src/main/resources/templates/views/login.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -
我是登录页
- - \ No newline at end of file -- libgit2 0.21.2