@Override public int readFromBuffer(int pos, Buffer buffer) { int length = buffer.getInt(pos); int start = pos + 4; String encoded = buffer.getString(start, start + length); fromJson(encoded); return pos + length + 4; }
@Override public int readFromBuffer(int pos, Buffer buffer) { int length = buffer.getInt(pos); int start = pos + 4; String encoded = buffer.getString(start, start + length); fromJson(encoded); return pos + length + 4; }
@Override public int readFromBuffer(int pos, Buffer buffer) { int length = buffer.getInt(pos); str = buffer.getString(pos + 4, pos + 4 + length); return pos + 4 + length; } }
@Override public CustomMessage decodeFromWire(int position, Buffer buffer) { // My custom message starting from this *position* of buffer int _pos = position; // Length of JSON int length = buffer.getInt(_pos); // Get JSON string by it`s length // Jump 4 because getInt() == 4 bytes String jsonStr = buffer.getString(_pos+=4, _pos+=length); JsonObject contentJson = new JsonObject(jsonStr); // Get fields int statusCode = contentJson.getInteger("statusCode"); String resultCode = contentJson.getString("resultCode"); String summary = contentJson.getString("summary"); // We can finally create custom message object return new CustomMessage(statusCode, resultCode, summary); }
@Test public void testGetString() throws Exception { String str = TestUtils.randomAlphaString(100); Buffer b = Buffer.buffer(str, "UTF-8"); // encode ascii as UTF-8 so one byte per char assertEquals(100, b.length()); String substr = b.getString(10, 20); assertEquals(str.substring(10, 20), substr); substr = b.getString(10, 20, "UTF-8"); assertEquals(str.substring(10, 20), substr); }
public static String readString(final Buffer buffer, final int[] location) { final short size = buffer.getShort(location[0]); int start = location[0] + 2; int end = start + size; final String utf_8 = buffer.getString(start, end, StandardCharsets.UTF_8.displayName()); location[0] = end; return utf_8; }
throw new IllegalStateException("format error in client request (attribute type domain name), got " + toHex(buffer2)); host = buffer2.getString(5, 5 + stringLen); port = buffer2.getUnsignedShort(5 + stringLen); } else {
assertIndexOutOfBoundsException(() -> b.getBytes(-1, -1)); assertIndexOutOfBoundsException(() -> b.getBytes(-100, -100)); assertIndexOutOfBoundsException(() -> b.getString(-1, bytesLen)); assertIndexOutOfBoundsException(() -> b.getString(0, bytesLen + 1)); assertIllegalArgumentException(() -> b.getString(2, 1)); assertIndexOutOfBoundsException(() -> b.getString(-1, bytesLen, "UTF-8")); assertIndexOutOfBoundsException(() -> b.getString(0, bytesLen + 1, "UTF-8")); assertIllegalArgumentException(() -> b.getString(2, 1, "UTF-8"));
@Override public int readFromBuffer(int pos, Buffer buffer) { int length = buffer.getInt(pos); int start = pos + 4; String encoded = buffer.getString(start, start + length); fromJson(encoded); return pos + length + 4; }
@Override public int readFromBuffer(int pos, Buffer buffer) { int length = buffer.getInt(pos); int start = pos + 4; String encoded = buffer.getString(start, start + length); fromJson(encoded); return pos + length + 4; }
@Override public int readFromBuffer(int pos, Buffer buffer) { int length = buffer.getInt(pos); str = buffer.getString(pos + 4, pos + 4 + length); return pos + 4 + length; } }
@Test public void testGetString() throws Exception { String str = TestUtils.randomAlphaString(100); Buffer b = Buffer.buffer(str, "UTF-8"); // encode ascii as UTF-8 so one byte per char assertEquals(100, b.length()); String substr = b.getString(10, 20); assertEquals(str.substring(10, 20), substr); substr = b.getString(10, 20, "UTF-8"); assertEquals(str.substring(10, 20), substr); }
@Test public void testWriteString() throws Exception { Buffer buffer = Buffer.buffer(); BufferUtils.writeString(buffer, "hi mom"); final short size = buffer.getShort(0); ok = size == 6 || die(); final String utf_8 = buffer.getString(2, size + 2, StandardCharsets.UTF_8.displayName()); puts(utf_8); ok = utf_8.equals("hi mom") || die(); }
/** * Returns a copy of a sub-sequence the Buffer as a <code>String</code> starting at position <code>start</code> * and ending at position <code>end - 1</code> interpreted as a String in the specified encoding * @param start * @param end * @param enc * @return */ public String getString(int start, int end, String enc) { String ret = delegate.getString(start, end, enc); return ret; }
/** * Returns a copy of a sub-sequence the Buffer as a <code>String</code> starting at position <code>start</code> * and ending at position <code>end - 1</code> interpreted as a String in the specified encoding * @param start * @param end * @param enc * @return */ public String getString(int start, int end, String enc) { String ret = delegate.getString(start, end, enc); return ret; }
@Override public void handle(AsyncResult<Message<Buffer>> message) { Buffer buffer = message.result().body(); int headerLength = buffer.getInt(0); JsonObject header = new JsonObject(buffer.getString(4, headerLength+4)); doneHandler.handle(header.getInteger("statusCode")); } });
@Override public void handle(AsyncResult<Message<Buffer>> message) { Buffer buffer = message.result().body(); int headerLength = buffer.getInt(0); JsonObject header = new JsonObject(buffer.getString(4, headerLength+4)); doneHandler.handle(header.getInteger("statusCode")); } });
throw new IllegalStateException("format error in client request (attribute type domain name), got " + toHex(buffer2)); host = buffer2.getString(5, 5 + stringLen); port = buffer2.getUnsignedShort(5 + stringLen); } else {
@Override public void handle(AsyncResult<Message<Buffer>> message) { Buffer buffer = message.result().body(); int headerLength = buffer.getInt(0); JsonObject header = new JsonObject(buffer.getString(4, headerLength+4)); if(header.getInteger("statusCode") == 200) { bodyHandler.handle(buffer.getBuffer(4+headerLength, buffer.length())); } else { bodyHandler.handle(null); } } });
assertIndexOutOfBoundsException(() -> b.getBytes(-1, -1)); assertIndexOutOfBoundsException(() -> b.getBytes(-100, -100)); assertIndexOutOfBoundsException(() -> b.getString(-1, bytesLen)); assertIndexOutOfBoundsException(() -> b.getString(0, bytesLen + 1)); assertIllegalArgumentException(() -> b.getString(2, 1)); assertIndexOutOfBoundsException(() -> b.getString(-1, bytesLen, "UTF-8")); assertIndexOutOfBoundsException(() -> b.getString(0, bytesLen + 1, "UTF-8")); assertIllegalArgumentException(() -> b.getString(2, 1, "UTF-8"));