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