package us.sosia.video.stream.handler;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.ExceptionEvent;
import org.jboss.netty.channel.SimpleChannelHandler;
import org.jboss.netty.channel.WriteCompletionEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class StreamServerHandler extends SimpleChannelHandler{
protected final StreamServerListener streamServerListener;
protected final static Logger logger = LoggerFactory.getLogger(StreamServerHandler.class);
public StreamServerHandler(StreamServerListener streamServerListener) {
super();
this.streamServerListener = streamServerListener;
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
throws Exception {
Channel channel = e.getChannel();
Throwable t = e.getCause();
logger.debug("exception caught at :{},exception :{}",channel,t);
streamServerListener.onExcaption(channel, t);
//super.exceptionCaught(ctx, e);
}
@Override
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e)
throws Exception {
Channel channel = e.getChannel();
logger.info("channel connected :{}",channel);
streamServerListener.onClientConnectedIn(channel);
super.channelConnected(ctx, e);
}
@Override
public void channelDisconnected(ChannelHandlerContext ctx,
ChannelStateEvent e) throws Exception {
Channel channel = e.getChannel();
logger.info("channel disconnected :{}",channel);
streamServerListener.onClientDisconnected(channel);
super.channelDisconnected(ctx, e);
}
@Override
public void writeComplete(ChannelHandlerContext ctx, WriteCompletionEvent e)
throws Exception {
Channel channel = e.getChannel();
long size = e.getWrittenAmount();
logger.info("frame send at :{} size :{}",channel,size);
super.writeComplete(ctx, e);
}
}