Example usage for java.nio ByteBuffer position

List of usage examples for java.nio ByteBuffer position

Introduction

In this page you can find the example usage for java.nio ByteBuffer position.

Prototype

public final int position() 

Source Link

Document

Returns the position of this buffer.

Usage

From source file:edu.umass.cs.gigapaxos.paxospackets.AcceptReplyPacket.java

public ByteBuffer toBytes(ByteBuffer bbuf) throws UnsupportedEncodingException {
    super.toBytes(bbuf);
    assert (bbuf.position() == SIZEOF_PAXOSPACKET_FIXED + this.getPaxosID().getBytes(CHARSET).length);
    bbuf.putInt(this.acceptor).putInt(this.ballot.ballotNumber).putInt(this.ballot.coordinatorID)
            .putInt(this.slotNumber).putInt(this.maxCheckpointedSlot).putLong(this.requestID)
            .put(this.isUndigestRequest() ? (byte) 1 : (byte) 0);
    return bbuf;//from w  w w.ja va 2  s  .com
}

From source file:jnative.io.AIO.java

private ByteBuffer getDirect(ByteBuffer buf) {
    if (buf instanceof DirectBuffer)
        return buf;

    int pos = buf.position();
    int lim = buf.limit();
    assert (pos <= lim);
    int rem = (pos <= lim ? lim - pos : 0);
    ByteBuffer bb = ByteBuffer.allocate(rem);
    bb.put(buf);/* ww  w  .  j  a va 2  s.c o m*/
    bb.flip();
    return bb;
}

From source file:net.phoenix.thrift.hello.SpringHelloService.java

@Override
public ByteBuffer hello(ByteBuffer hello_request) throws TException {
    HelloRequest request;/*  w w  w  .j av  a  2s.  c o m*/
    try {
        request = HelloRequest.parseFrom(
                ArrayUtils.subarray(hello_request.array(), hello_request.position(), hello_request.limit()));
    } catch (InvalidProtocolBufferException e) {
        throw new TException(e);
    }
    HelloResponse.Builder response = HelloResponse.newBuilder();
    response.setMessage("Hello " + request.getName());
    return ByteBuffer.wrap(response.build().toByteArray());
}

From source file:edu.tsinghua.lumaqq.qq.packets.PacketHelper.java

/**
 * position???parser/*from   w w w.j  a v  a 2s  .  com*/
 * ??
 * 
 * @param relocateFamily
 *       ?????
 * @param buf
 *       
 * @return
 *       true???false??
 */
public boolean relocate(int relocateFamily, ByteBuffer buf) {
    int offset = buf.position();
    for (int i = 0; i < PARSER_COUNT; i++) {
        if ((relocateFamily & family[i]) != 0) {
            int relocated = parsers[i].relocate(buf);
            if (relocated > offset) {
                buf.position(relocated);
                return true;
            } else
                return false;
        }
    }
    return false;
}

From source file:net.phoenix.thrift.hello.ThreadPoolTest.java

@Test
public void testByteBuffer() throws TException, IOException, InterruptedException {
    LOG.info("Client starting....");
    String name = "Hello ";
    // TTransport transport = new TNonblockingSocket("localhost", 9804);
    TTransport transport = new TSocket("localhost", 9804);
    transport.open();/*from   ww w  .  j a v  a  2  s.c  o m*/
    // TTransport transport = new TTransport(socket);
    TProtocol protocol = new TBinaryProtocol(transport);
    HelloService.Client client = new HelloService.Client(protocol);
    try {

        // System.out.println("start request. ");
        Hello.HelloRequest.Builder request = Hello.HelloRequest.newBuilder();
        request.setName(name);
        Hello.User.Builder user = Hello.User.newBuilder();
        user.setName("hello");
        user.setPassword("hello");
        request.setUser(user.build());
        ByteBuffer requestBuffer = ByteBuffer.wrap(request.build().toByteArray());
        ByteBuffer buffer = client.hello(requestBuffer);
        Hello.HelloResponse response = Hello.HelloResponse
                .parseFrom(ArrayUtils.subarray(buffer.array(), buffer.position(), buffer.limit()));
        String message = response.getMessage();
        assertEquals(message, "Hello " + name);
        // System.out.println(message);
    } finally {
        transport.close();
    }
}

From source file:com.mellanox.jxio.Msg.java

private String toStringBB(ByteBuffer bb) {
    StringBuffer sb = new StringBuffer();
    sb.append("[pos=");
    sb.append(bb.position());
    sb.append(" lim=");
    sb.append(bb.limit());/*from  w w  w . j  av a2s  .  c  o m*/
    sb.append(" cap=");
    sb.append(bb.capacity());
    sb.append("]");
    return sb.toString();
}

From source file:com.esri.geoevent.solutions.adapter.geomessage.DefenseOutboundAdapter.java

@SuppressWarnings("incomplete-switch")
@Override/*  w ww  .j  a v a2s.  co  m*/
public synchronized void receive(GeoEvent geoEvent) {

    ByteBuffer byteBuffer = ByteBuffer.allocate(10 * 1024);
    Integer wkid = -1;
    String message = "";

    message += "<geomessage v=\"1.0\">\n\r";
    message += "<_type>";
    message += messageType;
    message += "</_type>\n\r";
    message += "<_action>";
    message += "update";
    message += "</_action>\n\r";
    String messageid = UUID.randomUUID().toString();
    message += "<_id>";
    message += "{" + messageid + "}";
    message += "</_id>\n\r";
    MapGeometry geom = geoEvent.getGeometry();
    if (geom.getGeometry().getType() == com.esri.core.geometry.Geometry.Type.Point) {
        Point p = (Point) geom.getGeometry();
        message += "<_control_points>";
        message += ((Double) p.getX()).toString();
        message += ",";
        message += ((Double) p.getY()).toString();
        message += "</_control_points>\n\r";
        wkid = ((Integer) geom.getSpatialReference().getID());
    }

    if (wkid > 0) {
        String wkidValue = wkid.toString();
        message += "<_wkid>";
        message += wkidValue.toString();
        message += "</_wkid>\n\r";
    }
    GeoEventDefinition definition = geoEvent.getGeoEventDefinition();
    for (FieldDefinition fieldDefinition : definition.getFieldDefinitions()) {

        String attributeName = fieldDefinition.getName();
        Object value = geoEvent.getField(attributeName);

        if (value == null || value.equals("null")) {
            continue;
        }
        FieldType t = fieldDefinition.getType();
        if (t != FieldType.Geometry) {
            message += "<" + attributeName + ">";

            switch (t) {
            case String:
                // if(((String)value).isEmpty())
                // continue;
                message += value;
                break;
            case Date:
                Date date = (Date) value;
                message += (formatter.format(date));
                break;
            case Double:
                Double doubleValue = (Double) value;
                message += doubleValue.toString();
                break;
            case Float:
                Float floatValue = (Float) value;
                message += floatValue.toString();
                break;

            case Integer:
                Integer intValue = (Integer) value;
                message += intValue.toString();
                break;
            case Long:
                Long longValue = (Long) value;
                message += longValue.toString();
                break;
            case Short:
                Short shortValue = (Short) value;
                message += shortValue.toString();
                break;
            case Boolean:
                Boolean booleanValue = (Boolean) value;
                message += booleanValue.toString();
                break;

            }
            message += "</" + attributeName + ">\n\r";
        } else {
            if (definition.getIndexOf(attributeName) == definition.getIndexOf("GEOMETRY")) {
                continue;
            } else {
                String json = GeometryEngine.geometryToJson(wkid, (Geometry) value);
                message += "<" + attributeName + ">";
                message += json;
                message += "</" + attributeName + ">\n\r";
            }
            break;
        }

    }
    message += "</geomessage>";
    // stringBuffer.append("</geomessages>");
    message += "\r\n";

    ByteBuffer buf = charset.encode(message);
    if (buf.position() > 0)
        buf.flip();

    try {
        byteBuffer.put(buf);
    } catch (BufferOverflowException ex) {
        LOG.error(
                "Csv Outbound Adapter does not have enough room in the buffer to hold the outgoing data.  Either the receiving transport object is too slow to process the data, or the data message is too big.");
    }
    byteBuffer.flip();
    super.receive(byteBuffer, geoEvent.getTrackId(), geoEvent);
    byteBuffer.clear();
}

From source file:com.l2jfree.loginserver.network.L2Client.java

@Override
public boolean encrypt(ByteBuffer buf, int size) {
    final int offset = buf.position();
    try {//from w  w  w  . ja v a2s .  co m
        size = getLoginCrypt().encrypt(buf.array(), offset, size);
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }

    buf.position(offset + size);
    return true;
}

From source file:edu.uci.ics.hyracks.dataflow.std.sort.util.DeletableFrameTupleAppenderTest.java

@Test
public void testAppendAndDelete() throws Exception {
    int cap = 1024;
    int count = 10;
    int deleteSpace = 0;
    ByteBuffer buffer = makeAFrame(cap, count, deleteSpace);
    int dataOffset = buffer.position();
    appender.reset(buffer);//from   w  w  w.j ava 2  s. c  o  m

    int freeSpace = appender.getContiguousFreeSpace();
    int[] deleteSet = new int[] { 1, 3, 5 };
    for (int i = 0; i < deleteSet.length; i++) {
        deleteSpace += assertDeleteSucceed(deleteSet[i], freeSpace, deleteSpace);
    }

    ByteBuffer bufferRead = makeAFrame(cap, count * 2, 0);
    DeletableFrameTupleAppender accessor = new DeletableFrameTupleAppender(recordDescriptor);
    accessor.reset(bufferRead);

    for (int i = count; i < accessor.getTupleCount(); i++) {
        int id = appender.append(accessor, i);
        dataOffset += assertTupleIsExpected(i, dataOffset);
        assertEquals(i, id);
    }

    appender.reOrganizeBuffer();
    dataOffset = 0;
    for (int i = 0; i < appender.getTupleCount(); i++) {
        if (ArrayUtils.contains(deleteSet, i)) {
            continue;
        }
        dataOffset += assertTupleIsExpected(i, dataOffset);
    }
}

From source file:com.linkedin.databus.core.DbusEventV1.java

private static int serializeFullEvent(long key, ByteBuffer serializationBuffer, DbusEventInfo eventInfo,
        byte[] attributes) {

    ByteBuffer valueBuffer = eventInfo.getValueByteBuffer();
    int payloadLen = (valueBuffer == null) ? eventInfo.getValueLength() : valueBuffer.remaining();

    int startPosition = serializationBuffer.position();
    serializationBuffer.put(DbusEventFactory.DBUS_EVENT_V1).putInt(HeaderCrcDefault)
            .putInt(LongKeyValueOffset + payloadLen).put(attributes).putLong(eventInfo.getSequenceId())
            .putShort(eventInfo.getpPartitionId()).putShort(eventInfo.getlPartitionId())
            .putLong(eventInfo.getTimeStampInNanos()).putShort(eventInfo.getSrcId())
            .put(eventInfo.getSchemaId(), 0, 16).putInt(HeaderCrcDefault).putLong(key);
    if (valueBuffer != null) {
        // note. put will advance position. In the case of wrapped byte[] it is ok, in the case of
        // ByteBuffer this is actually a read only copy of the buffer passed in.
        serializationBuffer.put(valueBuffer);
    }/*from  w  w  w .j  av  a 2 s  .c om*/

    int stopPosition = serializationBuffer.position();

    long valueCrc = ByteBufferCRC32.getChecksum(serializationBuffer, startPosition + LongKeyValueOffset,
            payloadLen);
    Utils.putUnsignedInt(serializationBuffer, startPosition + ValueCrcOffset, valueCrc);

    if (eventInfo.isAutocommit()) {
        //TODO (DDSDBUS-60): Medium : can avoid new here
        DbusEventV1 e = new DbusEventV1(serializationBuffer, startPosition);
        e.applyCrc();
    }

    serializationBuffer.position(stopPosition);
    return (stopPosition - startPosition);
}