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 | 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 | +} | ... | ... |