private static boolean bufferStartsWith(BytesReference buffer, String method) { char[] chars = method.toCharArray(); for (int i = 0; i < chars.length; i++) { if (buffer.get(i) != chars[i]) { return false; } } return true; }
private int findNextMarker(byte marker, int from, BytesReference data, int length) { for (int i = from; i < length; i++) { if (data.get(i) == marker) { return i; } } if (from != length) { throw new IllegalArgumentException("The bulk request must be terminated by a newline [\n]"); } return -1; }
private static int findNextMarker(byte marker, int from, BytesReference data, int length) { for (int i = from; i < length; i++) { if (data.get(i) == marker) { return i; } } if (from != length) { throw new IllegalArgumentException("The msearch request must be terminated by a newline [\n]"); } return -1; }
@Override public boolean isCompressed(BytesReference bytes) { if (bytes.length() < HEADER.length) { return false; } for (int i = 0; i < HEADER.length; ++i) { if (bytes.get(i) != HEADER[i]) { return false; } } return true; }
@Override public byte get(int index) { final int i = getOffsetIndex(index); return references[i].get(index - offsets[i]); }
/** * Returns the sliced {@link BytesReference}. If the {@link XContentType} is JSON, the byte preceding the marker is checked to see * if it is a carriage return and if so, the BytesReference is sliced so that the carriage return is ignored */ private BytesReference sliceTrimmingCarriageReturn(BytesReference bytesReference, int from, int nextMarker, XContentType xContentType) { final int length; if (XContentType.JSON == xContentType && bytesReference.get(nextMarker - 1) == (byte) '\r') { length = nextMarker - from - 1; } else { length = nextMarker - from; } return bytesReference.slice(from, length); }
private static int readHeaderBuffer(BytesReference headerBuffer) throws IOException { if (headerBuffer.get(0) != 'E' || headerBuffer.get(1) != 'S') { if (appearsToBeHTTP(headerBuffer)) { throw new TcpTransport.HttpOnTransportException("This is not an HTTP port"); } throw new StreamCorruptedException("invalid internal transport message format, got (" + Integer.toHexString(headerBuffer.get(0) & 0xFF) + "," + Integer.toHexString(headerBuffer.get(1) & 0xFF) + "," + Integer.toHexString(headerBuffer.get(2) & 0xFF) + "," + Integer.toHexString(headerBuffer.get(3) & 0xFF) + ")"); } final int messageLength; try (StreamInput input = headerBuffer.streamInput()) { input.skip(TcpHeader.MARKER_BYTES_SIZE); messageLength = input.readInt(); } if (messageLength == TransportKeepAlive.PING_DATA_SIZE) { // This is a ping return 0; } if (messageLength <= 0) { throw new StreamCorruptedException("invalid data length: " + messageLength); } if (messageLength > NINETY_PER_HEAP_SIZE) { throw new IllegalArgumentException("transport content length received [" + new ByteSizeValue(messageLength) + "] exceeded [" + new ByteSizeValue(NINETY_PER_HEAP_SIZE) + "]"); } return messageLength; }
private int findNextMarker(byte marker, int from, BytesReference data, int length) { for (int i = from; i < length; i++) { if (data.get(i) == marker) { return i; } } return -1; }
private static int findNextMarker(byte marker, int from, BytesReference data, int length) { for (int i = from; i < length; i++) { if (data.get(i) == marker) { return i; } } return -1; }
.append("] readable bytes with message size [").append(messageLengthBytes).append("] ").append("] are ["); for (int i = 0; i < maxToRead; i++) { sb.append(reference.get(i)).append(",");
private static int findNextMarker(byte marker, int from, BytesReference data, int length) { for (int i = from; i < length; i++) { if (data.get(i) == marker) { return i; } } if (from != length) { throw new IllegalArgumentException("The msearch request must be terminated by a newline [\n]"); } return -1; }
private int findNextMarker(byte marker, int from, BytesReference data, int length) { for (int i = from; i < length; i++) { if (data.get(i) == marker) { return i; } } if (from != length) { throw new IllegalArgumentException("The bulk request must be terminated by a newline [\n]"); } return -1; }
private int findNextMarker(byte marker, int from, BytesReference data, int length) { for (int i = from; i < length; i++) { if (data.get(i) == marker) { return i; } } if (from != length) { throw new IllegalArgumentException("The bulk request must be terminated by a newline [\n]"); } return -1; }
@Override public byte get(int index) { final int i = getOffsetIndex(index); return references[i].get(index - offsets[i]); }
@Override public byte get(int index) { final int i = getOffsetIndex(index); return references[i].get(index - offsets[i]); }
public void testToBytes() throws IOException { int[] sizes = {0, randomInt(PAGE_SIZE), PAGE_SIZE, randomIntBetween(2, PAGE_SIZE * randomIntBetween(2, 5))}; for (int i = 0; i < sizes.length; i++) { BytesReference pbr = newBytesReference(sizes[i]); byte[] bytes = BytesReference.toBytes(pbr); assertEquals(sizes[i], bytes.length); for (int j = 0; j < bytes.length; j++) { assertEquals(bytes[j], pbr.get(j)); } } }