/** * Start collecting stats for the {@link IoSession} of the service. * New sessions or destroyed will be automaticly added or removed. */ public void start() { synchronized (this) { if (worker != null && worker.isAlive()) throw new RuntimeException("Stat collecting already started"); // add all current sessions polledSessions = new ConcurrentLinkedQueue<IoSession>(); for (Iterator<SocketAddress> iter = service .getManagedServiceAddresses().iterator(); iter.hasNext();) { SocketAddress element = iter.next(); for (Iterator<IoSession> iter2 = service.getManagedSessions( element).iterator(); iter2.hasNext();) { addSession(iter2.next()); } } // listen for new ones service.addListener(serviceListener); // start polling worker = new Worker(); worker.start(); } }