Commit 321b0c9ec5d9d64a1558d0f7174b8cfc8ef94fab

Authored by 程嘉葳
1 parent 90677812
Exists in develop

调试

src/main/java/com/example/mina/Application.java
1 1 package com.example.mina;
2 2  
  3 +import com.example.mina.client.base.ClientManager;
  4 +import com.example.mina.client.base.MatrixClient;
  5 +import com.example.mina.client.base.MatrixCommand;
  6 +import com.example.mina.client.base.MatrixConnectConfig;
3 7 import org.springframework.boot.SpringApplication;
4 8 import org.springframework.boot.autoconfigure.SpringBootApplication;
  9 +import org.springframework.context.ConfigurableApplicationContext;
  10 +
  11 +import java.util.HashMap;
  12 +import java.util.Map;
5 13  
6 14 /**
7 15 * @author 杜云山
... ... @@ -11,7 +19,24 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
11 19 public class Application {
12 20  
13 21 public static void main(String[] args) {
14   - SpringApplication.run(Application.class, args);
  22 +// SpringApplication.run(Application.class, args);
  23 +
  24 + ConfigurableApplicationContext run = SpringApplication.run(Application.class, args);
  25 +
  26 + ClientManager clientManager = run.getBean(ClientManager.class);
  27 +
  28 + MatrixConnectConfig connectConfig = MatrixConnectConfig.builder()
  29 + .deviceId("15")
  30 + .deviceType("AEROFLEX")
  31 + .host("127.0.0.1")
  32 + .port(9100)
  33 + .build();
  34 +
  35 + MatrixClient client = clientManager.getOrCreateClient(connectConfig);
  36 +
  37 +
  38 + client.setAttenuation(1,2,3);
  39 +
15 40 }
16 41  
17 42 }
... ...
src/main/java/com/example/mina/client/base/AbstractClientFactory.java
... ... @@ -26,9 +26,10 @@ public abstract class AbstractClientFactory {
26 26  
27 27 MatrixClient client = new MatrixClient(connectConfig);
28 28  
  29 + client.setClientHandler(getClientHandler());
29 30 //TODO initiate the client
30 31 buildFilterChain(client.getFilterChain());
31   - client.setClientHandler(getClientHandler());
  32 +
32 33 return client;
33 34 }catch (Exception e) {
34 35 log.error("Can not create the client, error: ", e);
... ...
src/main/java/com/example/mina/client/base/AbstractMatrixIoHandler.java
... ... @@ -50,6 +50,7 @@ public abstract class AbstractMatrixIoHandler extends IoHandlerAdapter {
50 50  
51 51 @Override
52 52 public void messageSent(IoSession session, Object message) {
  53 + log.info("=======44444============");
53 54 }
54 55  
55 56 @Override
... ...
src/main/java/com/example/mina/client/base/ClientManager.java
1 1 package com.example.mina.client.base;
2 2  
3 3 import lombok.extern.slf4j.Slf4j;
  4 +import org.springframework.beans.factory.annotation.Autowired;
4 5 import org.springframework.stereotype.Component;
5 6 import org.springframework.util.Assert;
6 7  
7 8 import java.util.Collections;
  9 +import java.util.HashMap;
8 10 import java.util.Map;
9 11 import java.util.Set;
10 12  
... ... @@ -14,12 +16,15 @@ public class ClientManager<T extends AbstractClientFactory> {
14 16  
15 17 private Map<String, T> clientFactories;
16 18  
17   - private Map<String, MatrixClient> clients;
  19 + private Map<String, MatrixClient> clients ;
18 20  
19 21 public ClientManager() {
20   - this.clients = Collections.emptyMap();
  22 +
  23 + // this.clients = Collections.emptyMap();
  24 + this.clients = new HashMap<>();
21 25 }
22 26  
  27 + @Autowired
23 28 public void setClientFactories(Map<String, T> clientFactories) {
24 29 this.clientFactories = clientFactories;
25 30 }
... ...
src/main/java/com/example/mina/client/base/MatrixClient.java
... ... @@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j;
4 4 import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
5 5 import org.apache.mina.core.filterchain.IoFilterChain;
6 6 import org.apache.mina.core.future.ConnectFuture;
  7 +import org.apache.mina.core.future.WriteFuture;
7 8 import org.apache.mina.core.service.IoConnector;
8 9 import org.apache.mina.core.session.IoSession;
9 10 import org.apache.mina.filter.codec.ProtocolCodecFilter;
... ... @@ -84,10 +85,6 @@ public class MatrixClient {
84 85 }
85 86  
86 87 public IoFilterChain getFilterChain() {
87   - return ioSession.getFilterChain();
88   - }
89   -
90   - public void start() {
91 88 //1、创建客户端IoService
92 89 IoConnector connector = new NioSocketConnector();
93 90 //客户端链接超时时间
... ... @@ -106,6 +103,11 @@ public class MatrixClient {
106 103 // 获取连接会话
107 104 this.ioSession = connectFuture.getSession();
108 105 this.ioSession.setAttribute(MatrixConstants.SESSION_CONFIG_NAME, matrixConnectConfig);
  106 +
  107 + return ioSession.getFilterChain();
  108 + }
  109 +
  110 + public void start() {
109 111 //将数据发送线程启动
110 112 this.sender.start();
111 113 }
... ... @@ -165,7 +167,11 @@ public class MatrixClient {
165 167 try {
166 168 MatrixCommand command = commands.poll(5, TimeUnit.SECONDS);
167 169  
168   - client.ioSession.write(command);
  170 + if(command != null){
  171 + log.info("======================");
  172 + WriteFuture a =client.ioSession.write(command);
  173 + }
  174 +
169 175 }catch (Exception e) {
170 176 log.error("error occurred when send the request to device, device: " + client.matrixConnectConfig, e);
171 177 }
... ...
src/main/java/com/example/mina/client/box/aeroflex/AeroFlexClientFactory.java
1 1 package com.example.mina.client.box.aeroflex;
2 2  
3 3 import com.example.mina.client.base.AbstractClientFactory;
4   -import com.example.mina.client.base.AbstractMatrixIoHandler;
5 4 import com.example.mina.client.base.MatrixConstants;
  5 +import com.example.mina.client.base.MatrixDataProxy;
6 6 import org.apache.mina.core.filterchain.IoFilterChain;
7 7 import org.apache.mina.filter.codec.ProtocolCodecFilter;
8 8 import org.springframework.stereotype.Component;
... ... @@ -11,8 +11,9 @@ import org.springframework.stereotype.Component;
11 11 public class AeroFlexClientFactory extends AbstractClientFactory {
12 12  
13 13 @Override
14   - public AbstractMatrixIoHandler getClientHandler() {
15   - return null;
  14 + public AeroflexClientIoHandler getClientHandler() {
  15 + System.out.println("=============getClientHandler==================");
  16 + return new AeroflexClientIoHandler();
16 17 }
17 18  
18 19 @Override
... ...
src/main/java/com/example/mina/client/box/aeroflex/AeroFlexProtocolFactory.java
... ... @@ -27,6 +27,20 @@ public class AeroFlexProtocolFactory implements ProtocolCodecFactory {
27 27 if(! (msg instanceof MatrixCommand) ) {
28 28 log.error("error msg, msg is: {}", msg);
29 29 return;
  30 + }else{
  31 + MatrixCommand mc = (MatrixCommand) msg;
  32 + log.info("---发送数据参数!Attn = {},Col = {},Command = {},Row = {},MatrixId = {}", mc.getAttn(),mc.getCol(),mc.getCommand(),mc.getRow(),mc.getMatrixId());
  33 + IoBuffer buffer = IoBuffer.allocate(100, false).setAutoExpand(true);
  34 + buffer.putInt(mc.getCommand());
  35 + buffer.putInt(mc.getAttn());
  36 + buffer.putInt(mc.getCol());
  37 + buffer.putInt(mc.getRow());
  38 +
  39 + //buffer.put(lm.getContent().getBytes(charset));
  40 +
  41 + buffer.flip();
  42 + protocolEncoderOutput.write(buffer);
  43 + log.info("-=-=-=-=-=-=send finish==");
30 44 }
31 45 }
32 46 }
... ... @@ -36,10 +50,11 @@ public class AeroFlexProtocolFactory implements ProtocolCodecFactory {
36 50  
37 51 @Override
38 52 public void decode(IoSession ioSession, IoBuffer ioBuffer, ProtocolDecoderOutput protocolDecoderOutput) throws Exception {
  53 + log.info("--server返回给----client ------IoBuffer{}" , ioBuffer);
39 54 int cmd = ioBuffer.get();
40   - MatrixResponse response = new MatrixResponse();
  55 + MatrixResponse response = new MatrixResponse(); // todo
41 56  
42   - protocolDecoderOutput.write(response);
  57 + protocolDecoderOutput.write(ioBuffer);
43 58 }
44 59 }
45 60 }
... ...
src/main/java/com/example/mina/client/box/aeroflex/AeroflexClientIoHandler.java
... ... @@ -2,21 +2,36 @@ package com.example.mina.client.box.aeroflex;
2 2  
3 3 import com.example.mina.client.base.AbstractMatrixIoHandler;
4 4 import com.example.mina.client.base.MatrixDataProxy;
  5 +import lombok.extern.slf4j.Slf4j;
  6 +import org.apache.mina.core.session.IoSession;
5 7  
6 8 /**
7 9 * @author dy
8 10 * @date 2021/3/10
9 11 */
  12 +@Slf4j
10 13 public class AeroflexClientIoHandler extends AbstractMatrixIoHandler {
11 14  
12   - public AeroflexClientIoHandler(MatrixDataProxy matrixDataProxy) {
13   - super(matrixDataProxy);
  15 + //public AeroflexClientIoHandler(MatrixDataProxy matrixDataProxy) {
  16 + // super(matrixDataProxy);
  17 + // }
  18 +
  19 + public AeroflexClientIoHandler() {
  20 + super(new MatrixDataProxy());
14 21 }
15 22  
  23 +
16 24 @Override
17 25 public boolean handleCommandResponse(byte[] response) {
18   -
  26 + log.info("------AeroflexClientIoHandler-----{}",response);
19 27 return false;
20 28 }
21 29  
  30 + @Override
  31 + public void sessionCreated(IoSession session) {
  32 + System.out.println("=========111========");
  33 + }
  34 +
  35 +
  36 +
22 37 }
... ...
src/main/java/com/example/mina/server/box/aeroflex/AeroflexVirtualBoxHandler.java
1 1 package com.example.mina.server.box.aeroflex;
2 2  
  3 +import com.example.mina.client.base.MatrixCommand;
3 4 import com.example.mina.server.base.AbstractVirtualBoxHandler;
4 5 import com.example.mina.server.entity.AeroflexDataBuffer;
5 6 import lombok.extern.slf4j.Slf4j;
... ... @@ -94,7 +95,8 @@ public class AeroflexVirtualBoxHandler
94 95  
95 96 @Override
96 97 public void messageSent(IoSession session, Object message) {
97   -
  98 + //MatrixCommand mc=(MatrixCommand)message;
  99 + //log.info("--- abstractVirtual 发送数据成功!Attn = {},Col = {},Command = {},Row = {},MatrixId = {}", mc.getAttn(),mc.getCol(),mc.getCommand(),mc.getRow(),mc.getMatrixId());
98 100 log.info("--- abstractVirtual 发送数据成功!{}", message);
99 101 }
100 102  
... ...