Commit 5c2586c6ad9281b0e2c9df95d4639dbba6e1dacb

Authored by dy
1 parent 2359b0ae
Exists in develop

fix: 服务器消息从数据库读取配置

src/main/java/com/example/mina/client/base/AbstractClient.java
1 package com.example.mina.client.base; 1 package com.example.mina.client.base;
2 2
3 import com.example.mina.client.entity.AbstractClientMessage; 3 import com.example.mina.client.entity.AbstractClientMessage;
  4 +import com.example.mina.client.entity.ServerMessage;
  5 +import com.example.mina.client.service.ServerService;
  6 +import com.example.mina.client.service.impl.ServerServiceImpl;
4 import com.example.mina.server.base.AbstractHardwareDataBuffer; 7 import com.example.mina.server.base.AbstractHardwareDataBuffer;
5 import org.apache.mina.core.future.ConnectFuture; 8 import org.apache.mina.core.future.ConnectFuture;
6 import org.apache.mina.core.service.IoConnector; 9 import org.apache.mina.core.service.IoConnector;
@@ -27,17 +30,13 @@ public abstract class AbstractClient { @@ -27,17 +30,13 @@ public abstract class AbstractClient {
27 30
28 protected IoSession ioSession; 31 protected IoSession ioSession;
29 32
  33 + protected ServerService serverService = new ServerServiceImpl();
  34 +
30 protected AbstractClient() { 35 protected AbstractClient() {
31 - initHardwareDataBuffer();  
32 - initClientMessage();  
33 - init(abstractClientMessage); 36 + init();
34 } 37 }
35 38
36 - protected abstract void init(AbstractClientMessage abstractClientMessage);  
37 -  
38 - protected abstract void initHardwareDataBuffer();  
39 -  
40 - protected abstract void initClientMessage(); 39 + protected abstract void init();
41 40
42 public void start() { 41 public void start() {
43 //1、创建客户端IoService 42 //1、创建客户端IoService
@@ -48,9 +47,10 @@ public abstract class AbstractClient { @@ -48,9 +47,10 @@ public abstract class AbstractClient {
48 connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(protocolCodecFactory)); 47 connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(protocolCodecFactory));
49 //3、客户端IoHandler,发生消息 48 //3、客户端IoHandler,发生消息
50 connector.setHandler(abstractVirtualBoxClientHandler); 49 connector.setHandler(abstractVirtualBoxClientHandler);
  50 +
51 //连接服务端 51 //连接服务端
52 - ConnectFuture connectFuture = connector.connect(new InetSocketAddress(abstractVirtualBoxClientHandler.getClientMessage().getHost(),  
53 - abstractVirtualBoxClientHandler.getClientMessage().getPort())); 52 + ConnectFuture connectFuture = connector.connect(new InetSocketAddress(abstractClientMessage.getServerMessage().getHost(),
  53 + abstractClientMessage.getServerMessage().getPort()));
54 // 等待建立连接 54 // 等待建立连接
55 connectFuture.awaitUninterruptibly(); 55 connectFuture.awaitUninterruptibly();
56 // 获取连接会话 56 // 获取连接会话
src/main/java/com/example/mina/client/box/aeroflex/AeroflexClient.java
1 package com.example.mina.client.box.aeroflex; 1 package com.example.mina.client.box.aeroflex;
2 2
3 import com.example.mina.client.base.AbstractClient; 3 import com.example.mina.client.base.AbstractClient;
4 -import com.example.mina.client.entity.AbstractClientMessage; 4 +import com.example.mina.client.entity.AeroflexMessage;
  5 +import com.example.mina.client.entity.ServerMessage;
5 import com.example.mina.server.entity.AeroflexDataBuffer; 6 import com.example.mina.server.entity.AeroflexDataBuffer;
6 7
7 /** 8 /**
@@ -11,19 +12,14 @@ import com.example.mina.server.entity.AeroflexDataBuffer; @@ -11,19 +12,14 @@ import com.example.mina.server.entity.AeroflexDataBuffer;
11 public class AeroflexClient extends AbstractClient { 12 public class AeroflexClient extends AbstractClient {
12 13
13 @Override 14 @Override
14 - protected void init(AbstractClientMessage abstractClientMessage) {  
15 - protocolCodecFactory = new AeroflexByteFactory();  
16 - abstractVirtualBoxClientHandler = new AeroflexClientHandler(abstractClientMessage, hardwareDataBuffer);  
17 - }  
18 -  
19 - @Override  
20 - protected void initHardwareDataBuffer() { 15 + protected void init() {
  16 + ServerMessage serverMessage = serverService.getServerService(this.getClass().getSimpleName());
21 hardwareDataBuffer = new AeroflexDataBuffer(10, 10); 17 hardwareDataBuffer = new AeroflexDataBuffer(10, 10);
22 - }  
23 -  
24 - @Override  
25 - protected void initClientMessage() { 18 + abstractClientMessage = new AeroflexMessage();
  19 + abstractClientMessage.setServerMessage(serverMessage);
26 20
  21 + protocolCodecFactory = new AeroflexByteFactory();
  22 + abstractVirtualBoxClientHandler = new AeroflexClientHandler(abstractClientMessage, hardwareDataBuffer);
27 } 23 }
28 24
29 /*@Override 25 /*@Override
src/main/java/com/example/mina/client/box/lte3000/Lte3000Client.java
1 package com.example.mina.client.box.lte3000; 1 package com.example.mina.client.box.lte3000;
2 2
3 import com.example.mina.client.base.AbstractClient; 3 import com.example.mina.client.base.AbstractClient;
4 -import com.example.mina.client.entity.AbstractClientMessage;  
5 import com.example.mina.client.entity.Command; 4 import com.example.mina.client.entity.Command;
6 import com.example.mina.client.entity.Lte3000Message; 5 import com.example.mina.client.entity.Lte3000Message;
  6 +import com.example.mina.client.entity.ServerMessage;
7 import com.example.mina.server.entity.Lte3000DataBuffer; 7 import com.example.mina.server.entity.Lte3000DataBuffer;
8 import com.example.mina.server.util.Lte3000CommandHelper; 8 import com.example.mina.server.util.Lte3000CommandHelper;
9 9
@@ -14,21 +14,12 @@ import com.example.mina.server.util.Lte3000CommandHelper; @@ -14,21 +14,12 @@ import com.example.mina.server.util.Lte3000CommandHelper;
14 public class Lte3000Client extends AbstractClient { 14 public class Lte3000Client extends AbstractClient {
15 15
16 @Override 16 @Override
17 - protected void init(AbstractClientMessage abstractClientMessage) {  
18 - protocolCodecFactory = new Lte3000ByteFactory();  
19 - abstractVirtualBoxClientHandler = new Lte3000ClientHandler(abstractClientMessage, hardwareDataBuffer);  
20 - }  
21 -  
22 - @Override  
23 - protected void initHardwareDataBuffer() { 17 + protected void init() {
  18 + ServerMessage serverMessage = serverService.getServerService(this.getClass().getSimpleName());
24 hardwareDataBuffer = new Lte3000DataBuffer(32, 32, 30); 19 hardwareDataBuffer = new Lte3000DataBuffer(32, 32, 30);
25 - }  
26 -  
27 - @Override  
28 - protected void initClientMessage() {  
29 abstractClientMessage = new Lte3000Message(); 20 abstractClientMessage = new Lte3000Message();
30 - abstractClientMessage.setHost("localhost");  
31 - abstractClientMessage.setPort(9102); 21 + abstractClientMessage.setServerMessage(serverMessage);
  22 +
32 for (int i = 0; i < this.hardwareDataBuffer.getMaxRow(); i++) { 23 for (int i = 0; i < this.hardwareDataBuffer.getMaxRow(); i++) {
33 abstractClientMessage.getCommands().add(new Command("", Lte3000CommandHelper.genCommandGetCross(i + 1))); 24 abstractClientMessage.getCommands().add(new Command("", Lte3000CommandHelper.genCommandGetCross(i + 1)));
34 } 25 }
@@ -38,16 +29,16 @@ public class Lte3000Client extends AbstractClient { @@ -38,16 +29,16 @@ public class Lte3000Client extends AbstractClient {
38 for (int j = 0; j < this.hardwareDataBuffer.getMaxCol(); j++) { 29 for (int j = 0; j < this.hardwareDataBuffer.getMaxCol(); j++) {
39 abstractClientMessage.getCommands().add(new Command("", Lte3000CommandHelper.genCommandGetAttn(j + 1))); 30 abstractClientMessage.getCommands().add(new Command("", Lte3000CommandHelper.genCommandGetAttn(j + 1)));
40 } 31 }
41 - 32 + protocolCodecFactory = new Lte3000ByteFactory();
  33 + abstractVirtualBoxClientHandler = new Lte3000ClientHandler(abstractClientMessage, hardwareDataBuffer);
42 } 34 }
43 35
44 -  
45 public void setAttenuation(int row, int col, int atten) { 36 public void setAttenuation(int row, int col, int atten) {
46 //ioSession.write("abcdfd".getBytes()); 37 //ioSession.write("abcdfd".getBytes());
47 byte[] cmd; 38 byte[] cmd;
48 if (row == 0) { 39 if (row == 0) {
49 cmd = Lte3000CommandHelper.genCommandSetAttn(col, atten); 40 cmd = Lte3000CommandHelper.genCommandSetAttn(col, atten);
50 - }else{ 41 + } else {
51 cmd = Lte3000CommandHelper.genCommandSetCross(row, col); 42 cmd = Lte3000CommandHelper.genCommandSetCross(row, col);
52 } 43 }
53 ioSession.write(cmd); 44 ioSession.write(cmd);
src/main/java/com/example/mina/client/entity/AbstractClientMessage.java
1 package com.example.mina.client.entity; 1 package com.example.mina.client.entity;
2 2
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Builder;
3 import lombok.Data; 5 import lombok.Data;
  6 +import lombok.NoArgsConstructor;
4 7
5 import java.util.ArrayList; 8 import java.util.ArrayList;
6 import java.util.List; 9 import java.util.List;
@@ -12,9 +15,7 @@ import java.util.List; @@ -12,9 +15,7 @@ import java.util.List;
12 @Data 15 @Data
13 public abstract class AbstractClientMessage { 16 public abstract class AbstractClientMessage {
14 17
15 - protected String host;  
16 -  
17 - protected int port; 18 + protected ServerMessage serverMessage;
18 19
19 protected List<Command> commands = new ArrayList<>(); 20 protected List<Command> commands = new ArrayList<>();
20 } 21 }
src/main/java/com/example/mina/client/entity/AeroflexMessage.java 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +package com.example.mina.client.entity;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Builder;
  5 +import lombok.Data;
  6 +import lombok.NoArgsConstructor;
  7 +
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * @author dy
  12 + * @date 2021/3/11
  13 + */
  14 +public class AeroflexMessage extends AbstractClientMessage{
  15 +}
src/main/java/com/example/mina/client/entity/Lte3000Message.java
1 package com.example.mina.client.entity; 1 package com.example.mina.client.entity;
2 2
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Builder;
  5 +import lombok.Data;
  6 +import lombok.NoArgsConstructor;
  7 +
3 /** 8 /**
4 * @author dy 9 * @author dy
5 * @date 2021/3/11 10 * @date 2021/3/11
src/main/java/com/example/mina/client/entity/ServerMessage.java 0 → 100644
@@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
  1 +package com.example.mina.client.entity;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Builder;
  5 +import lombok.Data;
  6 +import lombok.NoArgsConstructor;
  7 +
  8 +/**
  9 + * @author dy
  10 + * @date 2021/3/12
  11 + */
  12 +@Data
  13 +@NoArgsConstructor
  14 +@AllArgsConstructor
  15 +@Builder
  16 +public class ServerMessage {
  17 +
  18 + protected String host;
  19 +
  20 + protected int port;
  21 +}
src/main/java/com/example/mina/client/service/ServerService.java 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +package com.example.mina.client.service;
  2 +
  3 +import com.example.mina.client.entity.AbstractClientMessage;
  4 +import com.example.mina.client.entity.ServerMessage;
  5 +
  6 +/**
  7 + * @author dy
  8 + * @date 2021/3/12
  9 + */
  10 +public interface ServerService {
  11 + ServerMessage getServerService(String serverName);
  12 +}
src/main/java/com/example/mina/client/service/impl/ServerServiceImpl.java 0 → 100644
@@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
  1 +package com.example.mina.client.service.impl;
  2 +
  3 +import com.example.mina.client.entity.ServerMessage;
  4 +import com.example.mina.client.service.ServerService;
  5 +
  6 +/**
  7 + * @author dy
  8 + * @date 2021/3/12
  9 + */
  10 +public class ServerServiceImpl implements ServerService {
  11 +
  12 + @Override
  13 + public ServerMessage getServerService(String serverName) {
  14 + // 根据服务器名称获取数据库ip,port
  15 + // todo
  16 + ServerMessage serverMessage = ServerMessage.builder()
  17 + .host("localhost")
  18 + .port(9102)
  19 + .build();
  20 + return serverMessage;
  21 + }
  22 +}