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