package com.dy.common.mw.channel.tcp;
|
|
import org.apache.mina.core.service.IoHandlerAdapter;
|
import org.apache.mina.core.session.IdleStatus;
|
import org.apache.mina.core.session.IoSession;
|
|
public class TcpIoHandler extends IoHandlerAdapter {
|
|
private TcpUnitAdapter adapter ;
|
|
private boolean stop = false ;//为true时,停止TCP服务,并把已经TCP连接断连接
|
|
public TcpIoHandler(TcpUnitAdapter adapter){
|
this.adapter = adapter ;
|
}
|
|
public void stop(){
|
stop = true ;
|
}
|
|
public void recover(){
|
this.stop = false ;
|
}
|
|
/**
|
* 创建了会话
|
*/
|
@Override
|
public void sessionCreated(IoSession session) throws Exception {
|
if(stop){
|
session.closeNow() ;
|
}else{
|
super.sessionCreated(session);
|
}
|
}
|
|
/**
|
* 会话open时回调的方法
|
*/
|
public void sessionOpened(IoSession session) throws Exception {
|
if(stop){
|
session.closeNow() ;
|
}else{
|
this.adapter.newSessionEventCallback().sessionOpened(session);
|
}
|
}
|
|
/**
|
* 会话空闲
|
*/
|
@Override
|
public void sessionIdle(IoSession session, IdleStatus status)
|
throws Exception {
|
super.sessionIdle(session, status);
|
}
|
|
/**
|
* 输入关闭
|
*/
|
@Override
|
public void inputClosed(IoSession session) throws Exception {
|
super.inputClosed(session);
|
}
|
|
/**
|
* 网络关闭
|
*/
|
@Override
|
public void sessionClosed(IoSession session) throws Exception {
|
this.adapter.newSessionEventCallback().sessionClosed(session);
|
super.sessionClosed(session);
|
}
|
|
/**
|
* 发生异常
|
*/
|
@Override
|
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
|
this.adapter.newSessionEventCallback().exceptionCaught(session, cause);
|
}
|
|
/**
|
* 消息发送了
|
*/
|
@Override
|
public void messageSent(IoSession session, Object message) throws Exception {
|
super.messageSent(session, message);
|
this.adapter.newSessionEventCallback().messageSended(session, message);
|
}
|
|
/**
|
* 接收到数据后,回调的方法,进行数据处理
|
*/
|
@Override
|
public void messageReceived(IoSession session, Object message) throws Exception {
|
if(stop){
|
session.closeNow() ;
|
}else{
|
this.adapter.newSessionEventCallback().messageReceived(session, message);
|
}
|
}
|
|
}
|