List of usage examples for io.vertx.core.buffer Buffer slice
Buffer slice(int start, int end);
From source file:com.julienviet.childprocess.impl.ProcessImpl.java
License:Apache License
@Override public synchronized boolean onStdinReady(ByteBuffer byteBuffer) { Buffer buffer; while (byteBuffer.remaining() > 0 && (buffer = stdinPending.poll()) != null) { byte[] bytes; if (buffer.length() <= byteBuffer.remaining()) { bytes = buffer.getBytes();/* w ww. j a v a 2 s . com*/ } else { bytes = buffer.getBytes(0, byteBuffer.remaining()); stdinPending.addFirst(buffer.slice(byteBuffer.remaining(), buffer.length())); } byteBuffer.put(bytes); // See to do directly with Netty ByteBuf stdinSize -= bytes.length; } byteBuffer.flip(); context.runOnContext(v -> checkDrained()); if (stdinSize > 0) { return true; } else { wantWrite = false; if (stdinStatus == CLOSING) { stdinStatus = CLOSED; process.closeStdin(false); } return false; } }
From source file:io.servicecomb.foundation.vertx.server.TcpParser.java
License:Apache License
protected void onParse(Buffer buffer) { switch (status) { case TCP_HEADER: ByteBuf buf = buffer.getByteBuf(); if (!firstNEqual(TCP_MAGIC, buf.array(), TCP_MAGIC.length)) { reset();//w w w . java2 s .c o m return; } buf.skipBytes(TCP_MAGIC.length); msgId = buf.readLong(); totalLen = buf.readInt(); headerLen = buf.readInt(); if (totalLen == 0) { onReadOnePackage(null, null); return; } parser.fixedSizeMode(totalLen); status = ParseStatus.TCP_PAYLOAD; break; case TCP_PAYLOAD: Buffer headerBuffer = buffer.slice(0, headerLen); Buffer bodyBuffer = buffer.slice(headerLen, buffer.length()); onReadOnePackage(headerBuffer, bodyBuffer); break; default: break; } }
From source file:io.sqp.proxy.vertx.WebsocketWriteStream.java
License:Open Source License
private void flushSlice(Buffer buffer, int from, int length, boolean isFinal) { // a slice is just a view on the same buffer: no need to copy something Buffer outBuf = buffer.slice(from, from + length); WebSocketFrame frame;// w w w . ja v a 2s . c o m if (!_firstFrameWritten) { if (_format == DataFormat.Binary) { frame = WebSocketFrame.binaryFrame(outBuf, isFinal); } else { frame = WebSocketFrame.textFrame(outBuf.toString("UTF-8"), isFinal); } } else { frame = WebSocketFrame.continuationFrame(outBuf, isFinal); } _socket.writeFrame(frame); _firstFrameWritten = true; }
From source file:org.lealone.net.AsyncConnection.java
License:Open Source License
@Override public void handle(Buffer buffer) { if (lastBuffer != null) { buffer = lastBuffer.appendBuffer(buffer); lastBuffer = null;//from w w w . ja v a 2 s . c o m } int length = buffer.length(); if (length < 4) { lastBuffer = buffer; return; } int pos = 0; try { while (true) { // ?Transfer??????Transfer // ?CommandHandler?Transfer?? Transfer transfer; if (pos == 0) transfer = new Transfer(this, socket, buffer); else transfer = new Transfer(this, socket, buffer.slice(pos, pos + length)); int packetLength = transfer.readInt(); if (length - 4 == packetLength) { parsePacket(transfer); break; } else if (length - 4 > packetLength) { parsePacket(transfer); pos = pos + packetLength + 4; length = length - (packetLength + 4); // ??4 if (length < 4) { lastBuffer = buffer.getBuffer(pos, pos + length); break; } else { continue; } } else { lastBuffer = buffer.getBuffer(pos, pos + length); break; } } } catch (Throwable e) { logger.error("Parse packet", e); } }