Refine search
private synchronized void doRead(ByteBuffer bb) { Buffer buff = Buffer.buffer(readBufferSize); int readSize = getReadSize(); doRead(buff, 0, bb, readPos, readSize, ar -> { if (!ar.succeeded()) { handleException(ar.cause()); return; } Buffer buffer = ar.result(); if (buffer.length() == 0) { // Empty buffer represents end of file handleEnd(); return; } readPos += buffer.length(); readLength -= buffer.length(); if (queue.write(buffer)) { doRead(bb); } }); }
static Http2Settings decodeSettings(String base64Settings) { try { Http2Settings settings = new Http2Settings(); Buffer buffer = Buffer.buffer(Base64.getUrlDecoder().decode(base64Settings)); int pos = 0; int len = buffer.length(); while (pos < len) { int i = buffer.getUnsignedShort(pos); pos += 2; long j = buffer.getUnsignedInt(pos); pos += 4; settings.put((char)i, (Long)j); } return settings; } catch (Exception ignore) { } return null; }
@Override public int onDataRead(ChannelHandlerContext ctx, int streamId, ByteBuf data, int padding, boolean endOfStream) { int[] consumed = { padding }; VertxHttp2Stream req; synchronized (this) { req = streams.get(streamId); } if (req != null) { data = safeBuffer(data, ctx.alloc()); Buffer buff = Buffer.buffer(data); context.executeFromIO(v -> { int len = buff.length(); if (req.onDataRead(buff)) { consumed[0] += len; } }); if (endOfStream) { context.executeFromIO(v -> req.onEnd()); } } return consumed[0]; }
/** * Handle the request when a websocket upgrade header is present. */ private void handle(HttpServerRequestImpl req) { Buffer body = Buffer.buffer(); boolean[] failed = new boolean[1]; req.handler(buff -> { if (!failed[0]) { body.appendBuffer(buff); if (body.length() > 8192) { failed[0] = true; // Request Entity Too Large HttpServerResponseImpl resp = req.response(); resp.setStatusCode(413).end(); resp.close(); } } }); req.endHandler(v -> { if (!failed[0]) { handle(req, body); } }); }
@Test public void testCreateBuffers() throws Exception { Buffer buff = Buffer.buffer(1000); assertEquals(0, buff.length()); String str = TestUtils.randomUnicodeString(100); buff = Buffer.buffer(str); assertEquals(buff.length(), str.getBytes("UTF-8").length); assertEquals(str, buff.toString()); // TODO create with string with encoding byte[] bytes = TestUtils.randomByteArray(100); buff = Buffer.buffer(bytes); assertEquals(buff.length(), bytes.length); assertEquals(Buffer.buffer(bytes), Buffer.buffer(buff.getBytes())); }
@Test public void testAppendUnsignedInt() { Buffer b = Buffer.buffer(TestUtils.randomByteArray(100)); b.appendUnsignedInt(Integer.MAX_VALUE + (long) Integer.MAX_VALUE / 2); assertEquals(104, b.length()); b.appendUnsignedIntLE(Integer.MAX_VALUE + (long) Integer.MAX_VALUE / 2); assertEquals(108, b.length()); }
private void testSetBufferWithOffsetAndLen(Function<byte[], Buffer> bufferFactory) throws Exception { int bytesLen = 100; byte[] bytes = TestUtils.randomByteArray(bytesLen); Buffer src = bufferFactory.apply(bytes); int len = bytesLen - 2; Buffer b = Buffer.buffer(); b.setByte(0, (byte) '0'); b.setBuffer(1, src, 1, len); assertEquals(b.length(), len + 1); byte[] copy = new byte[len]; System.arraycopy(bytes, 1, copy, 0, len); assertTrue(TestUtils.byteArraysEqual(copy, b.getBytes(1, b.length()))); b.setBuffer(b.length(), src, 1, len); assertEquals(b.length(), 2 * len + 1); assertNullPointerException(() -> b.setBuffer(1, null)); assertNullPointerException(() -> b.setBuffer(1, null, 0, len)); }