protected DataBuffer createDataBuffer(int capacity) { return this.bufferFactory.allocateBuffer(capacity); }
private PooledDataBuffer createDataBuffer(int capacity) { return (PooledDataBuffer) dataBufferFactory.allocateBuffer(capacity); }
private DataBuffer toDataBuffer(ContentChunk chunk) { // We must copy until this is resolved: // https://github.com/eclipse/jetty.project/issues/2429 // Use copy instead of buffer wrapping because Callback#succeeded() is // used not only to release the buffer but also to request more data // which is a problem for codecs that buffer data. DataBuffer buffer = this.bufferFactory.allocateBuffer(chunk.buffer.capacity()); buffer.write(chunk.buffer); chunk.callback.succeeded(); return buffer; }
private Mono<DataBuffer> encodeText(CharSequence text, MediaType mediaType, DataBufferFactory bufferFactory) { Assert.notNull(mediaType.getCharset(), "Expected MediaType with charset"); byte[] bytes = text.toString().getBytes(mediaType.getCharset()); return Mono.defer(() -> Mono.just(bufferFactory.allocateBuffer(bytes.length).write(bytes))); }
private DataBuffer generateNewLine() { DataBuffer buffer = this.bufferFactory.allocateBuffer(2); buffer.write((byte)'\r'); buffer.write((byte)'\n'); return buffer; }
private Flux<DataBuffer> getRegionPrefix(DataBufferFactory bufferFactory, byte[] startBoundary, byte[] contentType, ResourceRegion region) { return Flux.defer(() -> Flux.just( bufferFactory.allocateBuffer(startBoundary.length).write(startBoundary), bufferFactory.allocateBuffer(contentType.length).write(contentType), bufferFactory.wrap(ByteBuffer.wrap(getContentRangeHeader(region)))) ); }
private DataBuffer randomBuffer(int size) { byte[] bytes = new byte[size]; rnd.nextBytes(bytes); DataBuffer buffer = dataBufferFactory.allocateBuffer(size); buffer.write(bytes); return buffer; }
@Override public DataBuffer allocateBuffer(int initialCapacity) { return allocateBufferInternal(this.delegate.allocateBuffer(initialCapacity)); }
@Override public Flux<DataBuffer> content() { byte[] bytes = this.content.getBytes(getCharset()); DataBuffer buffer = getBufferFactory().allocateBuffer(bytes.length); buffer.write(bytes); return Flux.just(buffer); }
protected DataBuffer byteBuffer(byte[] value) { DataBuffer buffer = this.bufferFactory.allocateBuffer(value.length); buffer.write(value); return buffer; }
@Override public DataBuffer allocateBuffer() { return allocateBufferInternal(this.delegate.allocateBuffer()); }
/** * Aggregate response data and convert to a String using the "Content-Type" * charset or "UTF-8" by default. */ public Mono<String> getBodyAsString() { Charset charset = Optional.ofNullable(getHeaders().getContentType()).map(MimeType::getCharset) .orElse(StandardCharsets.UTF_8); return getBody() .reduce(bufferFactory().allocateBuffer(), (previous, current) -> { previous.write(current); DataBufferUtils.release(current); return previous; }) .map(buffer -> bufferToString(buffer, charset)); }
private Flux<DataBuffer> getRegionSuffix(DataBufferFactory bufferFactory, String boundaryString) { byte[] endBoundary = getAsciiBytes("\r\n--" + boundaryString + "--"); return Flux.defer(() -> Flux.just( bufferFactory.allocateBuffer(endBoundary.length).write(endBoundary))); }
private DataBuffer generateBoundaryLine(byte[] boundary) { DataBuffer buffer = this.bufferFactory.allocateBuffer(boundary.length + 4); buffer.write((byte)'-'); buffer.write((byte)'-'); buffer.write(boundary); buffer.write((byte)'\r'); buffer.write((byte)'\n'); return buffer; }
/** * Return the response body aggregated and converted to a String using the * charset of the Content-Type response or otherwise as "UTF-8". */ public Mono<String> getBodyAsString() { Charset charset = getCharset(); return Flux.from(getBody()) .reduce(this.bufferFactory.allocateBuffer(), (previous, current) -> { previous.write(current); DataBufferUtils.release(current); return previous; }) .map(buffer -> dumpString(buffer, charset)); }
private DataBuffer generateLastLine(byte[] boundary) { DataBuffer buffer = this.bufferFactory.allocateBuffer(boundary.length + 6); buffer.write((byte)'-'); buffer.write((byte)'-'); buffer.write(boundary); buffer.write((byte)'-'); buffer.write((byte)'-'); buffer.write((byte)'\r'); buffer.write((byte)'\n'); return buffer; }
/** * Aggregate response data and convert to a String using the "Content-Type" * charset or "UTF-8" by default. */ public Mono<String> getBodyAsString() { Charset charset = Optional.ofNullable(getHeaders().getContentType()).map(MimeType::getCharset) .orElse(StandardCharsets.UTF_8); return getBody() .reduce(bufferFactory().allocateBuffer(), (previous, current) -> { previous.write(current); DataBufferUtils.release(current); return previous; }) .map(buffer -> bufferToString(buffer, charset)); }
@Test public void dumpString() { DataBuffer buffer = this.bufferFactory.allocateBuffer(4); String source = "abcd"; buffer.write(source.getBytes(StandardCharsets.UTF_8)); String result = DataBufferTestUtils.dumpString(buffer, StandardCharsets.UTF_8); assertEquals(source, result); release(buffer); }
@Override public Mono<Void> handle(ServerHttpRequest request, ServerHttpResponse response) { DataBuffer buffer = response.bufferFactory().allocateBuffer(body.length); buffer.write(body); return response.writeAndFlushWith(Flux.just(Flux.just(buffer))); } }
@Test public void dumpBytes() { DataBuffer buffer = this.bufferFactory.allocateBuffer(4); byte[] source = {'a', 'b', 'c', 'd'}; buffer.write(source); byte[] result = DataBufferTestUtils.dumpBytes(buffer); assertArrayEquals(source, result); release(buffer); }