/**
*
*/
package video.clientProxy;
import java.net.InetSocketAddress;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import video.lib.RtcpPacket;
/**
* @author yuezhu
*
*/
public class ClientRtcpPacketHandler extends IoHandlerAdapter {
private static final Logger LOGGER = LoggerFactory.getLogger(ClientRtcpPacketHandler.class);
@Override
public void sessionCreated(IoSession session) throws Exception {
}
@Override
public void messageReceived(IoSession session, Object buffer) throws Exception {
RtcpPacket packet = new RtcpPacket((IoBuffer) buffer);
// LOGGER.debug( "Received RTCP packet: " + packet.getType() );
ClientTrack clientTrack = ClientTrack.getByClientSocketAddress((InetSocketAddress) session.getRemoteAddress());
if (clientTrack == null) {
// drop packet
LOGGER.debug("Invalid address: " + (InetSocketAddress) session.getRemoteAddress() + " - Class: "
+ ((InetSocketAddress) session.getRemoteAddress()).getAddress().getClass());
return;
}
clientTrack.forwardRtcpToServer(packet);
}
@Override
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
LOGGER.error(cause.toString());
cause.printStackTrace();
// CloseFuture future = session.close(false);
// future.awaitUninterruptibly();
// session.close(true);
// session.getService().dispose();
}
@Override
public void sessionClosed(IoSession session) {
/*
* Invoked when a connection is closed.
*/
LOGGER.debug("ClientRtcpPacketHandler sessionClosed() is invoked.");
}
}