@Override public boolean isReady() { return this.os.isReady(); }
private boolean isWritePossible() { return this.outputStream.isReady(); }
private void flush() throws IOException { ServletOutputStream outputStream = this.outputStream; if (outputStream.isReady()) { try { outputStream.flush(); this.flushOnNext = false; } catch (IOException ex) { this.flushOnNext = true; throw ex; } } else { this.flushOnNext = true; } }
@Override public boolean isReady() { return this.os.isReady(); }
private boolean isWritePossible() { return this.outputStream.isReady(); }
@Override public boolean isReady() { return output.isReady(); }
@Override public boolean isReady() { if (servletOutputStream != null) { return servletOutputStream.isReady(); } return true; }
@Override public boolean isReady() { return this.delegate.isReady(); }
private void flush() throws IOException { ServletOutputStream outputStream = this.outputStream; if (outputStream.isReady()) { try { outputStream.flush(); this.flushOnNext = false; } catch (IOException ex) { this.flushOnNext = true; throw ex; } } else { this.flushOnNext = true; } }
/** * Write the DataBuffer to the response body OutputStream. * Invoked only when {@link ServletOutputStream#isReady()} returns "true" * and the readable bytes in the DataBuffer is greater than 0. * @return the number of bytes written */ protected int writeToOutputStream(DataBuffer dataBuffer) throws IOException { ServletOutputStream outputStream = this.outputStream; InputStream input = dataBuffer.asInputStream(); int bytesWritten = 0; byte[] buffer = new byte[this.bufferSize]; int bytesRead; while (outputStream.isReady() && (bytesRead = input.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); bytesWritten += bytesRead; } return bytesWritten; }
/** * Write the DataBuffer to the response body OutputStream. * Invoked only when {@link ServletOutputStream#isReady()} returns "true" * and the readable bytes in the DataBuffer is greater than 0. * @return the number of bytes written */ protected int writeToOutputStream(DataBuffer dataBuffer) throws IOException { ServletOutputStream outputStream = this.outputStream; InputStream input = dataBuffer.asInputStream(); int bytesWritten = 0; byte[] buffer = new byte[this.bufferSize]; int bytesRead; while (outputStream.isReady() && (bytesRead = input.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); bytesWritten += bytesRead; } return bytesWritten; }
@Override public void onWritePossible() throws IOException { // This method may be invoked multiple times and by different threads, e.g. when writing large byte arrays. // Make sure a write/complete operation is only done, if no other write is pending, i.e. if isReady() == true // Otherwise WritePendingException is thrown. Log.trace("Data can be written to [" + remoteAddress + "]"); synchronized ( context ) { final ServletOutputStream servletOutputStream = context.getResponse().getOutputStream(); while ( servletOutputStream.isReady() ) { final byte[] buffer = new byte[8*1024]; final int len = data.read( buffer ); if ( len < 0 ) { // EOF - all done! context.complete(); return; } // This is an async write, will never block. servletOutputStream.write( buffer, 0, len ); // When isReady() returns false for the next iteration, the // interface contract guarantees that onWritePossible() will // be called once a write is possible again. } } }
@Override public boolean isReadyForWrite() { return getOutputStream().isReady(); } }
@Override public boolean isReady() { return outputStream.isReady(); } };
@Override public boolean isReady() { return delegate.isReady(); }
@Override public boolean isReady() { if (streaming) { return outputStream.isReady(); } else { // memory or file return true; } }
@Override public boolean isReady() { return delegate.isReady(); }
@Override public boolean isReady() { return delegate.isReady(); }
public boolean isReady() { return os.isReady(); } public void setWriteListener(WriteListener writeListener) {
@Override public boolean isReadyForWrite() { return getOutputStream().isReady(); } }