Example usage for io.vertx.core.buffer Buffer slice

List of usage examples for io.vertx.core.buffer Buffer slice

Introduction

In this page you can find the example usage for io.vertx.core.buffer Buffer slice.

Prototype

Buffer slice(int start, int end);

Source Link

Document

Returns a slice of this buffer.

Usage

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);
    }
}