/** Handle the connection by passing it off to an AdminRunner */ protected void runConnection(Socket socket) throws IOException { AdminRunner runner = new AdminRunner(_context, socket); I2PThread t = new I2PThread(runner); t.setName("Admin Runner"); // t.setPriority(Thread.MIN_PRIORITY); t.setDaemon(true); t.start(); }
private void startup(int port) { if (_listener == null) { _listener = new AdminListener(_context, port); I2PThread t = new I2PThread(_listener); t.setName("Admin Listener:" + port); t.setDaemon(true); // t.setPriority(Thread.MIN_PRIORITY); t.start(); } else { _listener.setPort(port); _listener.restart(); } }
/** * Actually run the connection - listen for I2CP messages and respond. This is the main driver for * this class, though it gets all its meat from the {@link net.i2p.data.i2cp.I2CPMessageReader * I2CPMessageReader} */ public synchronized void startRunning() throws IOException { if (_dead || _reader != null) throw new IllegalStateException(); _reader = new I2CPMessageReader( new BufferedInputStream(_socket.getInputStream(), BUF_SIZE), new ClientMessageEventListener(_context, this, true)); _writer = new ClientWriterRunner(_context, this); I2PThread t = new I2PThread(_writer); t.setName("I2CP Writer " + __id.incrementAndGet()); t.setDaemon(true); t.start(); _out = new BufferedOutputStream(_socket.getOutputStream()); _reader.startReading(); // TODO need a cleaner for unclaimed items in _messages, but we have no timestamps... }