private void clear(final IoSession session, final IceStunUdpPeer stunUdpPeer,
final IceAgent iceAgent) {
log.info("Closing ICE agent");
iceAgent.close();
log.info("Clearing session!!");
final DatagramSessionImpl dgSession = (DatagramSessionImpl) session;
final DatagramChannel dgChannel = dgSession.getChannel();
session.close().join(10 * 1000);
final StunServer stunServer = stunUdpPeer.getStunServer();
stunServer.close();
try {
final IoService service = session.getService();
log.info("Service is: {}", service);
if (IoAcceptor.class.isAssignableFrom(service.getClass())) {
log.info("Unbinding all!!");
final IoAcceptor acceptor = (IoAcceptor) service;
acceptor.unbindAll();
}
session.getService().getFilterChain().clear();
dgChannel.disconnect();
dgChannel.close();
} catch (final Exception e) {
log.error("Error clearing session!!", e);
} finally {
stunUdpPeer.close();
}
}
}