Example usage for io.netty.buffer ByteBuf writeBoolean

List of usage examples for io.netty.buffer ByteBuf writeBoolean

Introduction

In this page you can find the example usage for io.netty.buffer ByteBuf writeBoolean.

Prototype

public abstract ByteBuf writeBoolean(boolean value);

Source Link

Document

Sets the specified boolean at the current writerIndex and increases the writerIndex by 1 in this buffer.

Usage

From source file:com.mobius.software.android.iotbroker.mqtt.parser.MQParser.java

License:Open Source License

public static ByteBuf encode(MQMessage header) throws UnsupportedEncodingException, MalformedMessageException {
    int length = header.getLength();
    ByteBuf buf = getBuffer(length);
    MessageType type = header.getType();

    switch (type) {
    case CONNECT:
        Connect connect = (Connect) header;
        if (connect.isWillFlag() && !connect.getWill().isValid())
            throw new MalformedMessageException("invalid will encoding");

        buf.setByte(0, (byte) (type.getNum() << 4));
        buf.writeShort(4);/*from  w  ww  .  java  2 s .  c o  m*/
        buf.writeBytes(connect.getName().getBytes());
        buf.writeByte(connect.getProtocolLevel());
        byte contentFlags = 0;
        contentFlags |= 0;
        contentFlags |= connect.isClean() ? 0x02 : 0;
        contentFlags |= connect.isWillFlag() ? 0x04 : 0;
        contentFlags |= connect.isWillFlag() ? connect.getWill().getTopic().getQos().getValue() << 3 : 0;
        contentFlags |= connect.isWillFlag() ? connect.getWill().getRetain() ? 0x20 : 0 : 0;
        contentFlags |= connect.isUsernameFlag() ? 0x40 : 0;
        contentFlags |= connect.isPasswordFlag() ? 0x80 : 0;
        buf.writeByte(contentFlags);
        buf.writeShort(connect.getKeepAlive());
        buf.writeShort(connect.getClientID().length());
        buf.writeBytes(connect.getClientID().getBytes("UTF-8"));

        if (connect.isWillFlag()) {
            Text willTopic = connect.getWill().getTopic().getName();
            if (willTopic != null) {
                buf.writeShort(willTopic.length());
                buf.writeBytes(willTopic.toString().getBytes("UTF-8"));
            }

            byte[] willMessage = connect.getWill().getContent();
            if (willMessage != null) {
                buf.writeShort(willMessage.length);
                buf.writeBytes(willMessage);
            }
        }

        String username = connect.getUserName();
        if (username != null) {
            buf.writeShort(username.length());
            buf.writeBytes(username.getBytes("UTF-8"));
        }

        String password = connect.getPassword();
        if (password != null) {
            buf.writeShort(password.length());
            buf.writeBytes(password.getBytes("UTF-8"));
        }
        break;

    case CONNACK:
        Connack connack = (Connack) header;
        buf.setByte(0, (byte) (type.getNum() << 4));
        buf.writeBoolean(connack.isSessionPresent());
        buf.writeByte(connack.getReturnCode().getNum());
        break;

    case PUBLISH:
        Publish publish = (Publish) header;
        byte firstByte = (byte) (type.getNum() << 4);
        firstByte |= publish.isDup() ? 8 : 0;
        firstByte |= (publish.getTopic().getQos().getValue() << 1);
        firstByte |= publish.isRetain() ? 1 : 0;
        buf.setByte(0, firstByte);
        buf.writeShort(publish.getTopic().length());
        buf.writeBytes(publish.getTopic().getName().toString().getBytes("UTF-8"));
        if (publish.getPacketID() != null)
            buf.writeShort(publish.getPacketID());
        buf.writeBytes(publish.getContent());
        break;

    case PUBACK:
        Puback puback = (Puback) header;
        buf.setByte(0, (byte) (type.getNum() << 4));
        buf.writeShort(puback.getPacketID());
        break;

    case PUBREC:
        Pubrec pubrec = (Pubrec) header;
        buf.setByte(0, (byte) (type.getNum() << 4));
        buf.writeShort(pubrec.getPacketID());
        break;

    case PUBREL:
        Pubrel pubrel = (Pubrel) header;
        buf.setByte(0, (byte) ((type.getNum() << 4) | 0x2));
        buf.writeShort(pubrel.getPacketID());
        break;

    case PUBCOMP:
        Pubcomp pubcomp = (Pubcomp) header;
        buf.setByte(0, (byte) (type.getNum() << 4));
        buf.writeShort(pubcomp.getPacketID());
        break;

    case SUBSCRIBE:
        Subscribe sub = (Subscribe) header;
        buf.setByte(0, (byte) ((type.getNum() << 4) | 0x2));
        if (sub.getPacketID() != null)
            buf.writeShort(sub.getPacketID());
        for (Topic subscription : sub.getTopics()) {
            buf.writeShort(subscription.getName().length());
            buf.writeBytes(subscription.getName().toString().getBytes("UTF-8"));
            buf.writeByte(subscription.getQos().getValue());
        }
        break;

    case SUBACK:
        Suback suback = (Suback) header;
        buf.setByte(0, (byte) (type.getNum() << 4));
        buf.writeShort(suback.getPacketID());
        for (SubackCode code : suback.getReturnCodes())
            buf.writeByte(code.getNum());
        break;

    case UNSUBSCRIBE:
        Unsubscribe unsub = (Unsubscribe) header;
        buf.setByte(0, (byte) ((type.getNum() << 4) | 0x2));
        buf.writeShort(unsub.getPacketID());
        for (Topic topic : unsub.getTopics()) {
            buf.writeShort(topic.getName().length());
            buf.writeBytes(topic.getName().toString().getBytes("UTF-8"));
        }
        break;

    case UNSUBACK:
        Unsuback unsuback = (Unsuback) header;
        buf.setByte(0, (byte) (type.getNum() << 4));
        buf.writeShort(unsuback.getPacketID());
        break;

    case DISCONNECT:
    case PINGREQ:
    case PINGRESP:
        buf.setByte(0, (byte) (type.getNum() << 4));
        break;

    default:
        throw new MalformedMessageException("Invalid header type: " + type);
    }

    return buf;
}

From source file:com.mobius.software.mqtt.parser.MQParser.java

License:Open Source License

public static ByteBuf encode(MQMessage header) throws MalformedMessageException {
    int length = header.getLength();
    ByteBuf buf = getBuffer(length);
    MessageType type = header.getType();
    try {/*from ww  w .  ja  v  a2s.co m*/
        switch (type) {
        case CONNECT:
            Connect connect = (Connect) header;
            if (connect.isWillFlag() && !connect.getWill().isValid())
                throw new MalformedMessageException("invalid will encoding");

            buf.setByte(0, (byte) (type.getNum() << 4));
            buf.writeShort(4);
            buf.writeBytes(connect.getName().getBytes());
            buf.writeByte(connect.getProtocolLevel());

            byte contentFlags = 0;
            if (connect.isCleanSession())
                contentFlags += 2;
            if (connect.isWillFlag()) {
                contentFlags += 4;
                contentFlags += connect.getWill().getTopic().getQos().getValue() << 3;
                if (connect.getWill().isRetain())
                    contentFlags += 0x20;
            }
            if (connect.isPasswordFlag())
                contentFlags += 0x40;
            if (connect.isUsernameFlag())
                contentFlags += 0x80;
            buf.writeByte(contentFlags);

            buf.writeShort(connect.getKeepalive());
            buf.writeShort(connect.getClientID().length());
            buf.writeBytes(connect.getClientID().getBytes("UTF-8"));

            if (connect.isWillFlag()) {
                Text willTopic = connect.getWill().getTopic().getName();
                if (willTopic != null) {
                    buf.writeShort(willTopic.length());
                    buf.writeBytes(willTopic.toString().getBytes("UTF-8"));
                }

                byte[] willMessage = connect.getWill().getContent();
                if (willMessage != null) {
                    buf.writeShort(willMessage.length);
                    buf.writeBytes(willMessage);
                }
            }

            String username = connect.getUsername();
            if (username != null) {
                buf.writeShort(username.length());
                buf.writeBytes(username.getBytes("UTF-8"));
            }

            String password = connect.getPassword();
            if (password != null) {
                buf.writeShort(password.length());
                buf.writeBytes(password.getBytes("UTF-8"));
            }
            break;

        case CONNACK:
            Connack connack = (Connack) header;
            buf.setByte(0, (byte) (type.getNum() << 4));
            buf.writeBoolean(connack.isSessionPresent());
            buf.writeByte(connack.getReturnCode().getNum());
            break;

        case PUBLISH:
            Publish publish = (Publish) header;
            byte firstByte = (byte) (type.getNum() << 4);
            firstByte |= publish.isDup() ? 8 : 0;
            firstByte |= (publish.getTopic().getQos().getValue() << 1);
            firstByte |= publish.isRetain() ? 1 : 0;
            buf.setByte(0, firstByte);
            buf.writeShort(publish.getTopic().length());
            buf.writeBytes(publish.getTopic().getName().toString().getBytes("UTF-8"));
            switch (publish.getTopic().getQos()) {
            case AT_MOST_ONCE:
                if (publish.getPacketID() != null)
                    throw new MalformedMessageException("publish qos-0 must not contain packetID");
                break;
            case AT_LEAST_ONCE:
            case EXACTLY_ONCE:
                if (publish.getPacketID() == null)
                    throw new MalformedMessageException("publish qos-1,2 must contain packetID");
                buf.writeShort(publish.getPacketID());
                break;
            }
            buf.writeBytes(publish.getContent());
            break;

        case PUBACK:
            Puback puback = (Puback) header;
            buf.setByte(0, (byte) (type.getNum() << 4));
            if (puback.getPacketID() == null)
                throw new MalformedMessageException("puback must contain packetID");
            buf.writeShort(puback.getPacketID());
            break;

        case PUBREC:
            Pubrec pubrec = (Pubrec) header;
            buf.setByte(0, (byte) (type.getNum() << 4));
            if (pubrec.getPacketID() == null)
                throw new MalformedMessageException("pubrec must contain packetID");
            buf.writeShort(pubrec.getPacketID());
            break;

        case PUBREL:
            Pubrel pubrel = (Pubrel) header;
            buf.setByte(0, (byte) ((type.getNum() << 4) | 0x2));
            if (pubrel.getPacketID() == null)
                throw new MalformedMessageException("pubrel must contain packetID");
            buf.writeShort(pubrel.getPacketID());
            break;

        case PUBCOMP:
            Pubcomp pubcomp = (Pubcomp) header;
            buf.setByte(0, (byte) (type.getNum() << 4));
            if (pubcomp.getPacketID() == null)
                throw new MalformedMessageException("pubcomp must contain packetID");
            buf.writeShort(pubcomp.getPacketID());
            break;

        case SUBSCRIBE:
            Subscribe sub = (Subscribe) header;
            buf.setByte(0, (byte) ((type.getNum() << 4) | 0x2));
            if (sub.getPacketID() == null)
                throw new MalformedMessageException("subscribe must contain packetID");
            buf.writeShort(sub.getPacketID());
            for (Topic subscription : sub.getTopics()) {
                buf.writeShort(subscription.getName().length());
                buf.writeBytes(subscription.getName().toString().getBytes("UTF-8"));
                buf.writeByte(subscription.getQos().getValue());
            }
            break;

        case SUBACK:
            Suback suback = (Suback) header;
            buf.setByte(0, (byte) (type.getNum() << 4));
            if (suback.getPacketID() == null)
                throw new MalformedMessageException("suback must contain packetID");
            buf.writeShort(suback.getPacketID());
            for (SubackCode code : suback.getReturnCodes())
                buf.writeByte(code.getNum());
            break;

        case UNSUBSCRIBE:
            Unsubscribe unsub = (Unsubscribe) header;
            buf.setByte(0, (byte) ((type.getNum() << 4) | 0x2));
            if (unsub.getPacketID() == null)
                throw new MalformedMessageException("subscribe must contain packetID");
            buf.writeShort(unsub.getPacketID());
            for (Text topic : unsub.getTopics()) {
                buf.writeShort(topic.length());
                buf.writeBytes(topic.toString().getBytes("UTF-8"));
            }
            break;

        case UNSUBACK:
            Unsuback unsuback = (Unsuback) header;
            buf.setByte(0, (byte) (type.getNum() << 4));
            if (unsuback.getPacketID() == null)
                throw new MalformedMessageException("unsuback must contain packetID");
            buf.writeShort(unsuback.getPacketID());
            break;

        case DISCONNECT:
        case PINGREQ:
        case PINGRESP:
            buf.setByte(0, (byte) (type.getNum() << 4));
            break;

        default:
            throw new MalformedMessageException("Invalid header type: " + type);
        }

        return buf;
    } catch (UnsupportedEncodingException e) {
        throw new MalformedMessageException("unsupported string encoding:" + e.getMessage());
    }
}

From source file:com.mrcrayfish.furniture.network.message.MessageFillBasin.java

License:Open Source License

@Override
public void toBytes(ByteBuf buf) {
    buf.writeBoolean(hasWater);
    buf.writeInt(x);
    buf.writeInt(y);
    buf.writeInt(z);
}

From source file:com.mrcrayfish.furniture.network.message.MessageMineBayBuy.java

License:Open Source License

@Override
public void toBytes(ByteBuf buf) {
    buf.writeInt(itemNum);/*from   ww  w.j  a v a2s  .c o  m*/
    buf.writeInt(x);
    buf.writeInt(y);
    buf.writeInt(z);
    buf.writeBoolean(shouldClear);
}

From source file:com.ogarproject.ogar.server.net.packet.outbound.PacketOutUpdateNodes.java

License:Open Source License

@Override
public void writeData(ByteBuf buf) {
    // Removals by eating
    int lengthIndex = buf.writerIndex();
    int eaten = 0;
    buf.writerIndex(lengthIndex + 2);/*from  w w w .j  a  va  2 s .  com*/
    for (EntityImpl entity : removals) {
        if (entity.getConsumer() > 0) {
            eaten++;
            buf.writeInt(entity.getConsumer());
            buf.writeInt(entity.getID());
        }
    }
    buf.markWriterIndex();
    buf.writerIndex(lengthIndex);
    buf.writeShort(eaten);
    buf.resetWriterIndex();

    // Updates
    for (int id : updates) {
        EntityImpl entity = world.getEntity(id);
        if (entity == null) {
            // TODO - Theoretically this could be ignored, but it might cause other issues,
            // like having nonexistent entities on the player's screen. Re-evaluate this later?
            throw new MalformedPacketException("Attempted to update nonexistent entity");
        }

        buf.writeInt(entity.getID());
        buf.writeInt((int) entity.getPosition().getX());
        buf.writeInt((int) entity.getPosition().getY());
        buf.writeShort(entity.getPhysicalSize());
        buf.writeByte(entity.getColor().getRed());
        buf.writeByte(entity.getColor().getGreen());
        buf.writeByte(entity.getColor().getBlue());
        buf.writeBoolean(entity.isSpiked());
        // buf.skipBytes(18);
        if (entity instanceof CellImpl) {
            CellImpl cell = (CellImpl) entity;
            if (cell.getName() == null) {
                writeUTF16(buf, "");
            } else {
                writeUTF16(buf, cell.getName());
            }
        } else {
            writeUTF16(buf, "");
        }
    }
    buf.writeInt(0);

    // General removals
    buf.writeInt(removals.size());
    for (EntityImpl entity : removals) {
        buf.writeInt(entity.getID());
    }
}

From source file:com.parachute.common.AscendKeyPressMessage.java

License:Open Source License

@Override
public void toBytes(ByteBuf bb) {
    bb.writeBoolean(keyPressed);
}

From source file:com.parachute.common.KeyPressMessage.java

License:Open Source License

@Override
public void toBytes(ByteBuf bb) {
    bb.writeInt(keyCode);
    bb.writeBoolean(keyPressed);
}

From source file:com.seventh_root.ld33.common.network.packet.clientbound.PlayerLoginResponseClientBoundPacket.java

License:Apache License

@Override
public void write(ByteBuf buf) throws UnsupportedEncodingException {
    super.write(buf);
    writeString(buf, getMessage());/*w  w  w .j  ava 2s.  co m*/
    buf.writeBoolean(isSuccess());
}

From source file:com.seventh_root.ld33.common.network.packet.serverbound.PlayerLoginServerBoundPacket.java

License:Apache License

@Override
public void write(ByteBuf buf) throws UnsupportedEncodingException {
    super.write(buf);
    writeString(buf, getPlayerName());//  w  ww . j  a  va2s . com
    buf.writeInt(getEncryptedPassword().length);
    buf.writeBytes(getEncryptedPassword());
    buf.writeBoolean(isSignUp());
}

From source file:com.teambr.bookshelf.network.SyncableFieldPacket.java

License:Creative Commons License

@Override
public void toBytes(ByteBuf buf) {
    buf.writeBoolean(returnValue);
    buf.writeInt(id);//from   w  w  w.  ja  va  2 s . c o  m
    buf.writeDouble(value);
    buf.writeLong(blockPosition.toLong());
}