@Override public DataBuffer readPosition(int readPosition) { return this.dataBuffer.readPosition(readPosition); }
@Override public int readPosition() { return this.dataBuffer.readPosition(); }
@Override public DataBuffer readPosition(int readPosition) { return this.dataBuffer.readPosition(readPosition); }
@Override public int readPosition() { return this.dataBuffer.readPosition(); }
@Override public DataBuffer readPosition(int readPosition) { return this.delegate.readPosition(readPosition); }
@Override public int readPosition() { return this.delegate.readPosition(); }
/** * Find the given delimiter in the given data buffer. * @return the index of the delimiter, or -1 if not found. */ private static int indexOf(DataBuffer dataBuffer, byte[] delimiter) { for (int i = dataBuffer.readPosition(); i < dataBuffer.writePosition(); i++) { int dataBufferPos = i; int delimiterPos = 0; while (delimiterPos < delimiter.length) { if (dataBuffer.getByte(dataBufferPos) != delimiter[delimiterPos]) { break; } else { dataBufferPos++; if (dataBufferPos == dataBuffer.writePosition() && delimiterPos != delimiter.length - 1) { return -1; } } delimiterPos++; } if (delimiterPos == delimiter.length) { return i - dataBuffer.readPosition(); } } return -1; }
/** * Find the given delimiter in the given data buffer. * @return the index of the delimiter, or -1 if not found. */ private static int indexOf(DataBuffer dataBuffer, byte[] delimiter) { for (int i = dataBuffer.readPosition(); i < dataBuffer.writePosition(); i++) { int dataBufferPos = i; int delimiterPos = 0; while (delimiterPos < delimiter.length) { if (dataBuffer.getByte(dataBufferPos) != delimiter[delimiterPos]) { break; } else { dataBufferPos++; if (dataBufferPos == dataBuffer.writePosition() && delimiterPos != delimiter.length - 1) { return -1; } } delimiterPos++; } if (delimiterPos == delimiter.length) { return i - dataBuffer.readPosition(); } } return -1; }
int readPosition = dataBuffer.readPosition(); if (matchingDelimiter != null) { if (this.stripDelimiter) { frame = dataBuffer.slice(readPosition, length + matchingDelimiter.length); dataBuffer.readPosition(readPosition + length + matchingDelimiter.length); dataBuffer.readPosition(readPosition + dataBuffer.readableByteCount()); frames.add(DataBufferUtils.retain(frame));
int readPosition = dataBuffer.readPosition(); if (matchingDelimiter != null) { if (this.stripDelimiter) { frame = dataBuffer.slice(readPosition, length + matchingDelimiter.length); dataBuffer.readPosition(readPosition + length + matchingDelimiter.length); dataBuffer.readPosition(readPosition + dataBuffer.readableByteCount()); frames.add(DataBufferUtils.retain(frame));
@Test public void readPositionGreaterThanWritePosition() { DataBuffer buffer = createDataBuffer(1); try { buffer.readPosition(1); fail("IndexOutOfBoundsException expected"); } catch (IndexOutOfBoundsException ignored) { } finally { release(buffer); } }
@Test public void readPositionSmallerThanZero() { DataBuffer buffer = createDataBuffer(1); try { buffer.readPosition(-1); fail("IndexOutOfBoundsException expected"); } catch (IndexOutOfBoundsException ignored) { } finally { release(buffer); } }
@Test public void inputStream() throws IOException { DataBuffer buffer = createDataBuffer(4); buffer.write(new byte[]{'a', 'b', 'c', 'd', 'e'}); buffer.readPosition(1); InputStream inputStream = buffer.asInputStream(); assertEquals(4, inputStream.available()); int result = inputStream.read(); assertEquals('b', result); assertEquals(3, inputStream.available()); byte[] bytes = new byte[2]; int len = inputStream.read(bytes); assertEquals(2, len); assertArrayEquals(new byte[]{'c', 'd'}, bytes); assertEquals(1, inputStream.available()); Arrays.fill(bytes, (byte) 0); len = inputStream.read(bytes); assertEquals(1, len); assertArrayEquals(new byte[]{'e', (byte) 0}, bytes); assertEquals(0, inputStream.available()); assertEquals(-1, inputStream.read()); assertEquals(-1, inputStream.read(bytes)); release(buffer); }
@Test public void decreaseCapacityHighReadPosition() { DataBuffer buffer = createDataBuffer(2); buffer.writePosition(2); buffer.readPosition(2); buffer.capacity(1); assertEquals(1, buffer.capacity()); release(buffer); }
DataBuffer buffer = createDataBuffer(2); assertEquals(0, buffer.readPosition()); assertEquals(0, buffer.writePosition()); assertEquals(0, buffer.readableByteCount()); assertEquals(0, buffer.readPosition()); assertEquals(1, buffer.writePosition()); assertEquals(1, buffer.readableByteCount()); assertEquals(0, buffer.readPosition()); assertEquals(2, buffer.writePosition()); assertEquals(2, buffer.readableByteCount()); assertEquals(1, buffer.readPosition()); assertEquals(2, buffer.writePosition()); assertEquals(1, buffer.readableByteCount()); assertEquals(2, buffer.readPosition()); assertEquals(2, buffer.writePosition()); assertEquals(0, buffer.readableByteCount());
@Override public int readPosition() { return this.dataBuffer.readPosition(); }
@Override public DataBuffer readPosition(int readPosition) { return this.dataBuffer.readPosition(readPosition); }
@Override public DataBuffer readPosition(int readPosition) { return this.dataBuffer.readPosition(readPosition); }
/** * Find the given delimiter in the given data buffer. * @return the index of the delimiter, or -1 if not found. */ private static int indexOf(DataBuffer dataBuffer, byte[] delimiter) { for (int i = dataBuffer.readPosition(); i < dataBuffer.writePosition(); i++) { int dataBufferPos = i; int delimiterPos = 0; while (delimiterPos < delimiter.length) { if (dataBuffer.getByte(dataBufferPos) != delimiter[delimiterPos]) { break; } else { dataBufferPos++; if (dataBufferPos == dataBuffer.writePosition() && delimiterPos != delimiter.length - 1) { return -1; } } delimiterPos++; } if (delimiterPos == delimiter.length) { return i - dataBuffer.readPosition(); } } return -1; }
@Override public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) { // final MediaType contentType = super.getHeaders().getContentType(); if (body instanceof Mono) { final Mono<DataBuffer> monoBody = (Mono<DataBuffer>) body; return super.writeWith(monoBody.map(t -> { System.out.println("================save=============="); save(t); t.readPosition(0); return t; })); // return super.writeWith(monoBody.publishOn(single()).map(dataBuffer -> LogUtils.loggingResponse(log, dataBuffer))); } else if (body instanceof Flux) { final Flux<DataBuffer> monoBody = (Flux<DataBuffer>) body; // return super.writeWith(monoBody.publishOn(single()).map(dataBuffer -> LogUtils.loggingResponse(log, dataBuffer))); } return super.writeWith(body); }