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()); } }