Commit 5c2586c6ad9281b0e2c9df95d4639dbba6e1dacb
1 parent
2359b0ae
Exists in
develop
fix: 服务器消息从数据库读取配置
Showing
9 changed files
with
105 additions
and
42 deletions
Show diff stats
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
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 | +} |