@Override public void run() { doClose(); if (!closed) { closed = true; callback.closed(); } } });
@Override public void closed() { wrappee.closed(); } @Override
@Override public void closed() { wrappee.closed(); } @Override
@Override public void closed() { wrappee.closed(); } @Override
@Override public void closed() { wrappee.closed(); } @Override
@Override public void closed() { wait.run(); wrappee.closed(); } @Override
@Override public void close() { if (closed) { return; } closed = true; try { out.close(); wrappee.closed(); } catch (IOException ce) { wrappee.failed(ce); } }
@Override public void run() { // connections.remove(innerConnection.connectionId); // Will be removed when server closes connection if (proxyConnector == null) { return; } ByteBuffer b = ByteBuffer.allocate(1 + Ints.BYTES); b.put((byte) ProxyCommons.Commands.CLOSE); b.putInt(innerConnection.connectionId); b.flip(); SendCallback sendCallback = new SendCallback() { @Override public void failed(IOException e) { doClose(); } @Override public void sent() { } }; proxyConnector.send(null, b, sendCallback); innerConnection.connection.closed(); } });
@Override public void run() { int code; try { code = p.waitFor(); } catch (InterruptedException e) { code = -1; } try { error.close(); } catch (IOException e) { } try { input.close(); } catch (IOException e) { } p.destroy(); s.close(); if (code != 0) { callback.failed(new IOException("Non zero return code from tcpdump: " + code)); } else { callback.closed(); } } });
connection.closed();
callback.closed();
private void disconnect(DatagramChannel channel, SelectionKey selectionKey, Connection callback, IOException error) { if (channel != null) { channel.socket().close(); try { channel.close(); } catch (IOException e) { } } if (selectionKey != null) { selectionKey.cancel(); } IOException e = (error == null) ? new IOException("Closed") : new IOException("Closed because of", error); for (ToWrite toWrite : toWriteQueue) { toWrite.callback.failed(e); } toWriteQueue.clear(); currentChannel = null; currentSelectionKey = null; if (!closed) { closed = true; if (callback != null) { callback.closed(); } } } }
@Override public void run() { callback.connected(null); while (true) { byte[] recvData = new byte[84]; byte[] srcAddress = new byte[(family == StandardProtocolFamily.INET) ? 4 : 16]; try { int r = s.read(recvData, 0, recvData.length, srcAddress); Address a = new Address(srcAddress, 0); LOGGER.debug("Received raw packet: {} bytes from: {}", r, a); final ByteBuffer b = ByteBuffer.wrap(recvData, 0, r); if (family == StandardProtocolFamily.INET) { int headerLength = (b.get() & 0x0F) * 4; b.position(headerLength); } callback.received(a, b); } catch (Exception e) { LOGGER.trace("Error, probably closed", e); break; } } callback.closed(); } });