Commit 90677812801f68e0a738723990de7b419f977b09
1 parent
0aeb756e
Exists in
develop
feat: 实现
protocolFactory的实例
Showing
2 changed files
with
52 additions
and
0 deletions
Show diff stats
src/main/java/com/example/mina/client/box/aeroflex/AeroFlexClientFactory.java
@@ -3,6 +3,8 @@ package com.example.mina.client.box.aeroflex; | @@ -3,6 +3,8 @@ package com.example.mina.client.box.aeroflex; | ||
3 | import com.example.mina.client.base.AbstractClientFactory; | 3 | import com.example.mina.client.base.AbstractClientFactory; |
4 | import com.example.mina.client.base.AbstractMatrixIoHandler; | 4 | import com.example.mina.client.base.AbstractMatrixIoHandler; |
5 | import com.example.mina.client.base.MatrixConstants; | 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 | import org.springframework.stereotype.Component; | 8 | import org.springframework.stereotype.Component; |
7 | 9 | ||
8 | @Component(MatrixConstants.MATRIX_TYPE_AERO) | 10 | @Component(MatrixConstants.MATRIX_TYPE_AERO) |
@@ -12,4 +14,9 @@ public class AeroFlexClientFactory extends AbstractClientFactory { | @@ -12,4 +14,9 @@ public class AeroFlexClientFactory extends AbstractClientFactory { | ||
12 | public AbstractMatrixIoHandler getClientHandler() { | 14 | public AbstractMatrixIoHandler getClientHandler() { |
13 | return null; | 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 @@ | @@ -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 | +} |