From 5c2586c6ad9281b0e2c9df95d4639dbba6e1dacb Mon Sep 17 00:00:00 2001 From: dy <1351757011@qq.com> Date: Fri, 12 Mar 2021 14:35:42 +0800 Subject: [PATCH] fix: 服务器消息从数据库读取配置 --- src/main/java/com/example/mina/client/base/AbstractClient.java | 20 ++++++++++---------- src/main/java/com/example/mina/client/box/aeroflex/AeroflexClient.java | 20 ++++++++------------ src/main/java/com/example/mina/client/box/lte3000/Lte3000Client.java | 25 ++++++++----------------- src/main/java/com/example/mina/client/entity/AbstractClientMessage.java | 7 ++++--- src/main/java/com/example/mina/client/entity/AeroflexMessage.java | 15 +++++++++++++++ src/main/java/com/example/mina/client/entity/Lte3000Message.java | 5 +++++ src/main/java/com/example/mina/client/entity/ServerMessage.java | 21 +++++++++++++++++++++ src/main/java/com/example/mina/client/service/ServerService.java | 12 ++++++++++++ src/main/java/com/example/mina/client/service/impl/ServerServiceImpl.java | 22 ++++++++++++++++++++++ 9 files changed, 105 insertions(+), 42 deletions(-) create mode 100644 src/main/java/com/example/mina/client/entity/AeroflexMessage.java create mode 100644 src/main/java/com/example/mina/client/entity/ServerMessage.java create mode 100644 src/main/java/com/example/mina/client/service/ServerService.java create mode 100644 src/main/java/com/example/mina/client/service/impl/ServerServiceImpl.java 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 ced2462..fd6aedc 100644 --- a/src/main/java/com/example/mina/client/base/AbstractClient.java +++ b/src/main/java/com/example/mina/client/base/AbstractClient.java @@ -1,6 +1,9 @@ package com.example.mina.client.base; import com.example.mina.client.entity.AbstractClientMessage; +import com.example.mina.client.entity.ServerMessage; +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; @@ -27,17 +30,13 @@ public abstract class AbstractClient { protected IoSession ioSession; + protected ServerService serverService = new ServerServiceImpl(); + protected AbstractClient() { - initHardwareDataBuffer(); - initClientMessage(); - init(abstractClientMessage); + init(); } - protected abstract void init(AbstractClientMessage abstractClientMessage); - - protected abstract void initHardwareDataBuffer(); - - protected abstract void initClientMessage(); + protected abstract void init(); public void start() { //1、创建客户端IoService @@ -48,9 +47,10 @@ public abstract class AbstractClient { connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(protocolCodecFactory)); //3、客户端IoHandler,发生消息 connector.setHandler(abstractVirtualBoxClientHandler); + //连接服务端 - ConnectFuture connectFuture = connector.connect(new InetSocketAddress(abstractVirtualBoxClientHandler.getClientMessage().getHost(), - abstractVirtualBoxClientHandler.getClientMessage().getPort())); + ConnectFuture connectFuture = connector.connect(new InetSocketAddress(abstractClientMessage.getServerMessage().getHost(), + abstractClientMessage.getServerMessage().getPort())); // 等待建立连接 connectFuture.awaitUninterruptibly(); // 获取连接会话 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 a336dce..4d5bb1b 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,7 +1,8 @@ package com.example.mina.client.box.aeroflex; import com.example.mina.client.base.AbstractClient; -import com.example.mina.client.entity.AbstractClientMessage; +import com.example.mina.client.entity.AeroflexMessage; +import com.example.mina.client.entity.ServerMessage; import com.example.mina.server.entity.AeroflexDataBuffer; /** @@ -11,19 +12,14 @@ import com.example.mina.server.entity.AeroflexDataBuffer; public class AeroflexClient extends AbstractClient { @Override - protected void init(AbstractClientMessage abstractClientMessage) { - protocolCodecFactory = new AeroflexByteFactory(); - abstractVirtualBoxClientHandler = new AeroflexClientHandler(abstractClientMessage, hardwareDataBuffer); - } - - @Override - protected void initHardwareDataBuffer() { + protected void init() { + ServerMessage serverMessage = serverService.getServerService(this.getClass().getSimpleName()); hardwareDataBuffer = new AeroflexDataBuffer(10, 10); - } - - @Override - protected void initClientMessage() { + abstractClientMessage = new AeroflexMessage(); + abstractClientMessage.setServerMessage(serverMessage); + protocolCodecFactory = new AeroflexByteFactory(); + abstractVirtualBoxClientHandler = new AeroflexClientHandler(abstractClientMessage, hardwareDataBuffer); } /*@Override 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 dca3d02..31cf342 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,9 +1,9 @@ package com.example.mina.client.box.lte3000; import com.example.mina.client.base.AbstractClient; -import com.example.mina.client.entity.AbstractClientMessage; 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.Lte3000DataBuffer; import com.example.mina.server.util.Lte3000CommandHelper; @@ -14,21 +14,12 @@ import com.example.mina.server.util.Lte3000CommandHelper; public class Lte3000Client extends AbstractClient { @Override - protected void init(AbstractClientMessage abstractClientMessage) { - protocolCodecFactory = new Lte3000ByteFactory(); - abstractVirtualBoxClientHandler = new Lte3000ClientHandler(abstractClientMessage, hardwareDataBuffer); - } - - @Override - protected void initHardwareDataBuffer() { + protected void init() { + ServerMessage serverMessage = serverService.getServerService(this.getClass().getSimpleName()); hardwareDataBuffer = new Lte3000DataBuffer(32, 32, 30); - } - - @Override - protected void initClientMessage() { abstractClientMessage = new Lte3000Message(); - abstractClientMessage.setHost("localhost"); - abstractClientMessage.setPort(9102); + abstractClientMessage.setServerMessage(serverMessage); + for (int i = 0; i < this.hardwareDataBuffer.getMaxRow(); i++) { abstractClientMessage.getCommands().add(new Command("", Lte3000CommandHelper.genCommandGetCross(i + 1))); } @@ -38,16 +29,16 @@ public class Lte3000Client extends AbstractClient { 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 void setAttenuation(int row, int col, int atten) { //ioSession.write("abcdfd".getBytes()); byte[] cmd; if (row == 0) { cmd = Lte3000CommandHelper.genCommandSetAttn(col, atten); - }else{ + } else { cmd = Lte3000CommandHelper.genCommandSetCross(row, col); } ioSession.write(cmd); diff --git a/src/main/java/com/example/mina/client/entity/AbstractClientMessage.java b/src/main/java/com/example/mina/client/entity/AbstractClientMessage.java index 4974b4b..e04d87c 100644 --- a/src/main/java/com/example/mina/client/entity/AbstractClientMessage.java +++ b/src/main/java/com/example/mina/client/entity/AbstractClientMessage.java @@ -1,6 +1,9 @@ package com.example.mina.client.entity; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.ArrayList; import java.util.List; @@ -12,9 +15,7 @@ import java.util.List; @Data public abstract class AbstractClientMessage { - protected String host; - - protected int port; + protected ServerMessage serverMessage; protected List 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 new file mode 100644 index 0000000..317b3b9 --- /dev/null +++ b/src/main/java/com/example/mina/client/entity/AeroflexMessage.java @@ -0,0 +1,15 @@ +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/Lte3000Message.java b/src/main/java/com/example/mina/client/entity/Lte3000Message.java index 55c71a9..2539736 100644 --- a/src/main/java/com/example/mina/client/entity/Lte3000Message.java +++ b/src/main/java/com/example/mina/client/entity/Lte3000Message.java @@ -1,5 +1,10 @@ package com.example.mina.client.entity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + /** * @author dy * @date 2021/3/11 diff --git a/src/main/java/com/example/mina/client/entity/ServerMessage.java b/src/main/java/com/example/mina/client/entity/ServerMessage.java new file mode 100644 index 0000000..1a553b3 --- /dev/null +++ b/src/main/java/com/example/mina/client/entity/ServerMessage.java @@ -0,0 +1,21 @@ +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 new file mode 100644 index 0000000..4174d4c --- /dev/null +++ b/src/main/java/com/example/mina/client/service/ServerService.java @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000..426b8a3 --- /dev/null +++ b/src/main/java/com/example/mina/client/service/impl/ServerServiceImpl.java @@ -0,0 +1,22 @@ +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; + } +} -- libgit2 0.21.2