From 321b0c9ec5d9d64a1558d0f7174b8cfc8ef94fab Mon Sep 17 00:00:00 2001 From: dehua <2195241066@qq.com> Date: Wed, 24 Mar 2021 13:34:41 +0800 Subject: [PATCH] 调试 --- src/main/java/com/example/mina/Application.java | 27 ++++++++++++++++++++++++++- src/main/java/com/example/mina/client/base/AbstractClientFactory.java | 3 ++- src/main/java/com/example/mina/client/base/AbstractMatrixIoHandler.java | 1 + src/main/java/com/example/mina/client/base/ClientManager.java | 9 +++++++-- src/main/java/com/example/mina/client/base/MatrixClient.java | 16 +++++++++++----- src/main/java/com/example/mina/client/box/aeroflex/AeroFlexClientFactory.java | 7 ++++--- src/main/java/com/example/mina/client/box/aeroflex/AeroFlexProtocolFactory.java | 19 +++++++++++++++++-- src/main/java/com/example/mina/client/box/aeroflex/AeroflexClientIoHandler.java | 21 ++++++++++++++++++--- src/main/java/com/example/mina/server/box/aeroflex/AeroflexVirtualBoxHandler.java | 4 +++- 9 files changed, 89 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/example/mina/Application.java b/src/main/java/com/example/mina/Application.java index 96bc251..dd6c88f 100644 --- a/src/main/java/com/example/mina/Application.java +++ b/src/main/java/com/example/mina/Application.java @@ -1,7 +1,15 @@ package com.example.mina; +import com.example.mina.client.base.ClientManager; +import com.example.mina.client.base.MatrixClient; +import com.example.mina.client.base.MatrixCommand; +import com.example.mina.client.base.MatrixConnectConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; + +import java.util.HashMap; +import java.util.Map; /** * @author 杜云山 @@ -11,7 +19,24 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class Application { public static void main(String[] args) { - SpringApplication.run(Application.class, args); +// SpringApplication.run(Application.class, args); + + ConfigurableApplicationContext run = SpringApplication.run(Application.class, args); + + ClientManager clientManager = run.getBean(ClientManager.class); + + MatrixConnectConfig connectConfig = MatrixConnectConfig.builder() + .deviceId("15") + .deviceType("AEROFLEX") + .host("127.0.0.1") + .port(9100) + .build(); + + MatrixClient client = clientManager.getOrCreateClient(connectConfig); + + + client.setAttenuation(1,2,3); + } } diff --git a/src/main/java/com/example/mina/client/base/AbstractClientFactory.java b/src/main/java/com/example/mina/client/base/AbstractClientFactory.java index 6d4ce54..61a7a24 100644 --- a/src/main/java/com/example/mina/client/base/AbstractClientFactory.java +++ b/src/main/java/com/example/mina/client/base/AbstractClientFactory.java @@ -26,9 +26,10 @@ public abstract class AbstractClientFactory { MatrixClient client = new MatrixClient(connectConfig); + client.setClientHandler(getClientHandler()); //TODO initiate the client buildFilterChain(client.getFilterChain()); - client.setClientHandler(getClientHandler()); + return client; }catch (Exception e) { log.error("Can not create the client, error: ", e); diff --git a/src/main/java/com/example/mina/client/base/AbstractMatrixIoHandler.java b/src/main/java/com/example/mina/client/base/AbstractMatrixIoHandler.java index d94f91c..c371a15 100644 --- a/src/main/java/com/example/mina/client/base/AbstractMatrixIoHandler.java +++ b/src/main/java/com/example/mina/client/base/AbstractMatrixIoHandler.java @@ -50,6 +50,7 @@ public abstract class AbstractMatrixIoHandler extends IoHandlerAdapter { @Override public void messageSent(IoSession session, Object message) { + log.info("=======44444============"); } @Override diff --git a/src/main/java/com/example/mina/client/base/ClientManager.java b/src/main/java/com/example/mina/client/base/ClientManager.java index 4f0f6af..d272bc8 100644 --- a/src/main/java/com/example/mina/client/base/ClientManager.java +++ b/src/main/java/com/example/mina/client/base/ClientManager.java @@ -1,10 +1,12 @@ package com.example.mina.client.base; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.Assert; import java.util.Collections; +import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -14,12 +16,15 @@ public class ClientManager { private Map clientFactories; - private Map clients; + private Map clients ; public ClientManager() { - this.clients = Collections.emptyMap(); + + // this.clients = Collections.emptyMap(); + this.clients = new HashMap<>(); } + @Autowired public void setClientFactories(Map clientFactories) { this.clientFactories = clientFactories; } diff --git a/src/main/java/com/example/mina/client/base/MatrixClient.java b/src/main/java/com/example/mina/client/base/MatrixClient.java index b2b16e6..42a9e3a 100644 --- a/src/main/java/com/example/mina/client/base/MatrixClient.java +++ b/src/main/java/com/example/mina/client/base/MatrixClient.java @@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder; import org.apache.mina.core.filterchain.IoFilterChain; import org.apache.mina.core.future.ConnectFuture; +import org.apache.mina.core.future.WriteFuture; import org.apache.mina.core.service.IoConnector; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolCodecFilter; @@ -84,10 +85,6 @@ public class MatrixClient { } public IoFilterChain getFilterChain() { - return ioSession.getFilterChain(); - } - - public void start() { //1、创建客户端IoService IoConnector connector = new NioSocketConnector(); //客户端链接超时时间 @@ -106,6 +103,11 @@ public class MatrixClient { // 获取连接会话 this.ioSession = connectFuture.getSession(); this.ioSession.setAttribute(MatrixConstants.SESSION_CONFIG_NAME, matrixConnectConfig); + + return ioSession.getFilterChain(); + } + + public void start() { //将数据发送线程启动 this.sender.start(); } @@ -165,7 +167,11 @@ public class MatrixClient { try { MatrixCommand command = commands.poll(5, TimeUnit.SECONDS); - client.ioSession.write(command); + if(command != null){ + log.info("======================"); + WriteFuture a =client.ioSession.write(command); + } + }catch (Exception e) { log.error("error occurred when send the request to device, device: " + client.matrixConnectConfig, e); } diff --git a/src/main/java/com/example/mina/client/box/aeroflex/AeroFlexClientFactory.java b/src/main/java/com/example/mina/client/box/aeroflex/AeroFlexClientFactory.java index 1ec479b..5bf509d 100644 --- a/src/main/java/com/example/mina/client/box/aeroflex/AeroFlexClientFactory.java +++ b/src/main/java/com/example/mina/client/box/aeroflex/AeroFlexClientFactory.java @@ -1,8 +1,8 @@ package com.example.mina.client.box.aeroflex; import com.example.mina.client.base.AbstractClientFactory; -import com.example.mina.client.base.AbstractMatrixIoHandler; import com.example.mina.client.base.MatrixConstants; +import com.example.mina.client.base.MatrixDataProxy; import org.apache.mina.core.filterchain.IoFilterChain; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.springframework.stereotype.Component; @@ -11,8 +11,9 @@ import org.springframework.stereotype.Component; public class AeroFlexClientFactory extends AbstractClientFactory { @Override - public AbstractMatrixIoHandler getClientHandler() { - return null; + public AeroflexClientIoHandler getClientHandler() { + System.out.println("=============getClientHandler=================="); + return new AeroflexClientIoHandler(); } @Override diff --git a/src/main/java/com/example/mina/client/box/aeroflex/AeroFlexProtocolFactory.java b/src/main/java/com/example/mina/client/box/aeroflex/AeroFlexProtocolFactory.java index 0b4ceae..7aa3371 100644 --- a/src/main/java/com/example/mina/client/box/aeroflex/AeroFlexProtocolFactory.java +++ b/src/main/java/com/example/mina/client/box/aeroflex/AeroFlexProtocolFactory.java @@ -27,6 +27,20 @@ public class AeroFlexProtocolFactory implements ProtocolCodecFactory { if(! (msg instanceof MatrixCommand) ) { log.error("error msg, msg is: {}", msg); return; + }else{ + MatrixCommand mc = (MatrixCommand) msg; + log.info("---发送数据参数!Attn = {},Col = {},Command = {},Row = {},MatrixId = {}", mc.getAttn(),mc.getCol(),mc.getCommand(),mc.getRow(),mc.getMatrixId()); + IoBuffer buffer = IoBuffer.allocate(100, false).setAutoExpand(true); + buffer.putInt(mc.getCommand()); + buffer.putInt(mc.getAttn()); + buffer.putInt(mc.getCol()); + buffer.putInt(mc.getRow()); + + //buffer.put(lm.getContent().getBytes(charset)); + + buffer.flip(); + protocolEncoderOutput.write(buffer); + log.info("-=-=-=-=-=-=send finish=="); } } } @@ -36,10 +50,11 @@ public class AeroFlexProtocolFactory implements ProtocolCodecFactory { @Override public void decode(IoSession ioSession, IoBuffer ioBuffer, ProtocolDecoderOutput protocolDecoderOutput) throws Exception { + log.info("--server返回给----client ------IoBuffer{}" , ioBuffer); int cmd = ioBuffer.get(); - MatrixResponse response = new MatrixResponse(); + MatrixResponse response = new MatrixResponse(); // todo - protocolDecoderOutput.write(response); + protocolDecoderOutput.write(ioBuffer); } } } diff --git a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClientIoHandler.java b/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClientIoHandler.java index 9f63648..7b538fc 100644 --- a/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClientIoHandler.java +++ b/src/main/java/com/example/mina/client/box/aeroflex/AeroflexClientIoHandler.java @@ -2,21 +2,36 @@ package com.example.mina.client.box.aeroflex; import com.example.mina.client.base.AbstractMatrixIoHandler; import com.example.mina.client.base.MatrixDataProxy; +import lombok.extern.slf4j.Slf4j; +import org.apache.mina.core.session.IoSession; /** * @author dy * @date 2021/3/10 */ +@Slf4j public class AeroflexClientIoHandler extends AbstractMatrixIoHandler { - public AeroflexClientIoHandler(MatrixDataProxy matrixDataProxy) { - super(matrixDataProxy); + //public AeroflexClientIoHandler(MatrixDataProxy matrixDataProxy) { + // super(matrixDataProxy); + // } + + public AeroflexClientIoHandler() { + super(new MatrixDataProxy()); } + @Override public boolean handleCommandResponse(byte[] response) { - + log.info("------AeroflexClientIoHandler-----{}",response); return false; } + @Override + public void sessionCreated(IoSession session) { + System.out.println("=========111========"); + } + + + } diff --git a/src/main/java/com/example/mina/server/box/aeroflex/AeroflexVirtualBoxHandler.java b/src/main/java/com/example/mina/server/box/aeroflex/AeroflexVirtualBoxHandler.java index c8e909d..5cce49e 100644 --- a/src/main/java/com/example/mina/server/box/aeroflex/AeroflexVirtualBoxHandler.java +++ b/src/main/java/com/example/mina/server/box/aeroflex/AeroflexVirtualBoxHandler.java @@ -1,5 +1,6 @@ package com.example.mina.server.box.aeroflex; +import com.example.mina.client.base.MatrixCommand; import com.example.mina.server.base.AbstractVirtualBoxHandler; import com.example.mina.server.entity.AeroflexDataBuffer; import lombok.extern.slf4j.Slf4j; @@ -94,7 +95,8 @@ public class AeroflexVirtualBoxHandler @Override public void messageSent(IoSession session, Object message) { - + //MatrixCommand mc=(MatrixCommand)message; + //log.info("--- abstractVirtual 发送数据成功!Attn = {},Col = {},Command = {},Row = {},MatrixId = {}", mc.getAttn(),mc.getCol(),mc.getCommand(),mc.getRow(),mc.getMatrixId()); log.info("--- abstractVirtual 发送数据成功!{}", message); } -- libgit2 0.21.2