public synchronized Server startListening(ServerConnectListener listener) throws IOException { if (serverRunning.getAndSet(true)) throw new IOException("This node is already listening!"); final Server server = new Server(descriptor.getServerSocket(), listener); server.start(); return server; }