private void writeBufferBlocking(final boolean writeFinal) throws IOException { if (channel == null) { channel = servletRequestContext.getExchange().getResponseChannel(); } buffer.flip(); while (buffer.hasRemaining()) { if (writeFinal) { channel.writeFinal(buffer); } else { channel.write(buffer); } if (buffer.hasRemaining()) { channel.awaitWritable(); } } buffer.clear(); setFlags(FLAG_WRITE_STARTED); }
long written = 0; createChannel(); setFlags(FLAG_WRITE_STARTED); do { res = channel.write(bufs);
void updateWrittenAsync(final long len) throws IOException { this.written += len; long contentLength = servletRequestContext.getOriginalResponse().getContentLength(); if (contentLength != -1 && this.written >= contentLength) { setFlags(FLAG_CLOSED); //if buffersToWrite is set we are already flushing //so we don't have to do anything if (buffersToWrite == null && pendingFile == null) { if (flushBufferAsync(true)) { channel.shutdownWrites(); setFlags(FLAG_DELEGATE_SHUTDOWN); channel.flush(); if (pooledBuffer != null) { pooledBuffer.close(); buffer = null; pooledBuffer = null; } } } } }
return true; setFlags(FLAG_WRITE_STARTED); createChannel(); long res;
setFlags(FLAG_WRITE_STARTED); buffer.flip(); long res;
updateWritten(count); } else { setFlags(FLAG_WRITE_STARTED); createChannel();
setFlags(FLAG_CLOSED); clearFlags(FLAG_READY); if (allAreClear(state, FLAG_WRITE_STARTED) && channel == null && servletRequestContext.getOriginalResponse().getHeader(Headers.CONTENT_LENGTH_STRING) == null) { channel = servletRequestContext.getExchange().getResponseChannel(); setFlags(FLAG_DELEGATE_SHUTDOWN); StreamSinkChannel channel = this.channel; if (channel != null) { //mock requests