liurunyu
2024-10-25 f16c96a3bbd126dca21b254ceb018a0558f5ea1d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.dy.common.mw.channel.tcp;
 
import org.apache.mina.filter.codec.ProtocolCodecFactory;
import org.apache.mina.filter.codec.ProtocolEncoder;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.core.session.IoSession;
 
public class DataCodecFactory implements ProtocolCodecFactory {
 
    private TcpUnitAdapter adapter ;
    private boolean stop = false ;//为true时,停止TCP服务,并把已经TCP连接断连接
 
    public DataCodecFactory(TcpUnitAdapter adapter) {
        this.adapter = adapter ;
    }
 
    public void stop(){
        stop = true ;
    }
 
    public void recover(){
        this.stop = false ;
    }
 
 
    public ProtocolEncoder getEncoder(IoSession ioSession) {
        if(stop){
            ioSession.closeNow() ;
        }
        return new DataEncoder();
    }
 
    public ProtocolDecoder getDecoder(IoSession ioSession) {
        if(stop){
            ioSession.closeNow() ;
        }
        return new DataDecoder(adapter.newPrefixedDataAvailableHandle());
    }
}