Commit 90677812801f68e0a738723990de7b419f977b09

Authored by wu
1 parent 0aeb756e
Exists in develop

feat: 实现

protocolFactory的实例
src/main/java/com/example/mina/client/box/aeroflex/AeroFlexClientFactory.java
... ... @@ -3,6 +3,8 @@ package com.example.mina.client.box.aeroflex;
3 3 import com.example.mina.client.base.AbstractClientFactory;
4 4 import com.example.mina.client.base.AbstractMatrixIoHandler;
5 5 import com.example.mina.client.base.MatrixConstants;
  6 +import org.apache.mina.core.filterchain.IoFilterChain;
  7 +import org.apache.mina.filter.codec.ProtocolCodecFilter;
6 8 import org.springframework.stereotype.Component;
7 9  
8 10 @Component(MatrixConstants.MATRIX_TYPE_AERO)
... ... @@ -12,4 +14,9 @@ public class AeroFlexClientFactory extends AbstractClientFactory {
12 14 public AbstractMatrixIoHandler getClientHandler() {
13 15 return null;
14 16 }
  17 +
  18 + @Override
  19 + public void buildFilterChain(IoFilterChain ioFilterChain) {
  20 + ioFilterChain.addLast("codec", new ProtocolCodecFilter(new AeroFlexProtocolFactory()));
  21 + }
15 22 }
... ...
src/main/java/com/example/mina/client/box/aeroflex/AeroFlexProtocolFactory.java 0 → 100644
... ... @@ -0,0 +1,45 @@
  1 +package com.example.mina.client.box.aeroflex;
  2 +
  3 +import com.example.mina.client.base.MatrixCommand;
  4 +import com.example.mina.client.base.MatrixResponse;
  5 +import lombok.extern.slf4j.Slf4j;
  6 +import org.apache.mina.core.buffer.IoBuffer;
  7 +import org.apache.mina.core.session.IoSession;
  8 +import org.apache.mina.filter.codec.*;
  9 +
  10 +@Slf4j
  11 +public class AeroFlexProtocolFactory implements ProtocolCodecFactory {
  12 +
  13 + @Override
  14 + public ProtocolEncoder getEncoder(IoSession ioSession) throws Exception {
  15 + return new AeroFlexProtocolEncoder();
  16 + }
  17 +
  18 + @Override
  19 + public ProtocolDecoder getDecoder(IoSession ioSession) throws Exception {
  20 + return new AeroFlexProtocolDecoder();
  21 + }
  22 +
  23 + public static class AeroFlexProtocolEncoder extends ProtocolEncoderAdapter {
  24 + @Override
  25 + public void encode(IoSession ioSession, Object msg, ProtocolEncoderOutput protocolEncoderOutput) throws Exception {
  26 +
  27 + if(! (msg instanceof MatrixCommand) ) {
  28 + log.error("error msg, msg is: {}", msg);
  29 + return;
  30 + }
  31 + }
  32 + }
  33 +
  34 +
  35 + public static class AeroFlexProtocolDecoder extends ProtocolDecoderAdapter {
  36 +
  37 + @Override
  38 + public void decode(IoSession ioSession, IoBuffer ioBuffer, ProtocolDecoderOutput protocolDecoderOutput) throws Exception {
  39 + int cmd = ioBuffer.get();
  40 + MatrixResponse response = new MatrixResponse();
  41 +
  42 + protocolDecoderOutput.write(response);
  43 + }
  44 + }
  45 +}
... ...