protected void startWriting() throws IOException { IoWriteFutureImpl future = writes.peek(); if (future == null) { return; } if (!currentWrite.compareAndSet(null, future)) { return; } out.writePacket(future.getBuffer()).addListener(new SshFutureListener<IoWriteFuture>() { @Override public void operationComplete(IoWriteFuture f) { if (f.isWritten()) { future.setValue(Boolean.TRUE); } else { future.setValue(f.getException()); } finishWrite(); } @SuppressWarnings("synthetic-access") private void finishWrite() { writes.remove(future); currentWrite.compareAndSet(future, null); try { startWriting(); } catch (IOException e) { log.error("finishWrite({}) failed ({}) re-start writing", out, e.getClass().getSimpleName()); } } }); }
protected void startWriting() throws IOException { IoWriteFutureImpl future = writes.peek(); if (future == null) { return; } if (!currentWrite.compareAndSet(null, future)) { return; } out.writePacket(future.getBuffer()).addListener(new SshFutureListener<IoWriteFuture>() { @Override public void operationComplete(IoWriteFuture f) { if (f.isWritten()) { future.setValue(Boolean.TRUE); } else { future.setValue(f.getException()); } finishWrite(); } @SuppressWarnings("synthetic-access") private void finishWrite() { writes.remove(future); currentWrite.compareAndSet(future, null); try { startWriting(); } catch (IOException e) { log.error("finishWrite({}) failed ({}) re-start writing", out, e.getClass().getSimpleName()); } } }); }
Buffer buffer = future.getBuffer(); int total = buffer.available(); if (total > 0) {
Buffer buffer = future.getBuffer(); int total = buffer.available(); if (total > 0) {