Example usage for io.netty.buffer ByteBuf readSlice

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

Introduction

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

Prototype

public abstract ByteBuf readSlice(int length);

Source Link

Document

Returns a new slice of this buffer's sub-region starting at the current readerIndex and increases the readerIndex by the size of the new slice (= length ).

Usage

From source file:org.opendaylight.protocol.rsvp.parser.impl.te.BandwidthObjectParser.java

License:Open Source License

@Override
protected RsvpTeObject localParseObject(final ByteBuf byteBuf) throws RSVPParsingException {
    final BasicBandwidthObjectBuilder builder = new BasicBandwidthObjectBuilder();
    final ByteBuf v = byteBuf.readSlice(METRIC_VALUE_F_LENGTH);
    builder.setBandwidth(new Bandwidth(ByteArray.readAllBytes(v)));
    return builder.build();
}

From source file:org.opendaylight.protocol.rsvp.parser.impl.te.DetourObjectIpv6Parser.java

License:Open Source License

@Override
protected RsvpTeObject localParseObject(final ByteBuf byteBuf) {
    final ByteBuf plrId = byteBuf.readSlice(byteBuf.capacity() / 2);
    final Ipv6DetourObjectBuilder ipv6Case = new Ipv6DetourObjectBuilder();

    final List<PlrId> plrIdList = new ArrayList<>();

    while (plrId.isReadable()) {
        final PlrIdBuilder plr = new PlrIdBuilder();
        plr.setPlrId(Ipv6Util.addressForByteBuf(plrId));
        plrIdList.add(plr.build());// w  ww .  j a v  a  2  s. c o m
    }

    final List<AvoidNode> avoidNodeList = new ArrayList<>();
    while (byteBuf.isReadable()) {
        final AvoidNodeBuilder plr = new AvoidNodeBuilder();
        plr.setAvoidNode(Ipv6Util.addressForByteBuf(byteBuf));
        avoidNodeList.add(plr.build());
    }

    return ipv6Case.setPlrId(plrIdList).setAvoidNode(avoidNodeList).build();
}

From source file:org.opendaylight.protocol.rsvp.parser.impl.te.FastRerouteObjectParser.java

License:Open Source License

@Override
protected RsvpTeObject localParseObject(final ByteBuf byteBuf) {
    final BasicFastRerouteObjectBuilder builder = new BasicFastRerouteObjectBuilder();
    builder.setSetupPriority(byteBuf.readUnsignedByte());
    builder.setHoldPriority(byteBuf.readUnsignedByte());
    builder.setHopLimit(byteBuf.readUnsignedByte());
    builder.setFlags(FastRerouteFlags.forValue(byteBuf.readUnsignedByte()));
    final ByteBuf v = byteBuf.readSlice(METRIC_VALUE_F_LENGTH);
    builder.setBandwidth(new Bandwidth(ByteArray.readAllBytes(v)));
    builder.setIncludeAny(new AttributeFilter(byteBuf.readUnsignedInt()));
    builder.setExcludeAny(new AttributeFilter(byteBuf.readUnsignedInt()));
    builder.setIncludeAll(new AttributeFilter(byteBuf.readUnsignedInt()));
    return builder.build();
}

From source file:org.opendaylight.protocol.rsvp.parser.impl.te.InformationalFastRerouteObjectParser.java

License:Open Source License

@Override
protected RsvpTeObject localParseObject(final ByteBuf byteBuf) throws RSVPParsingException {
    final LegacyFastRerouteObjectBuilder builder = new LegacyFastRerouteObjectBuilder();
    builder.setSetupPriority(byteBuf.readUnsignedByte());
    builder.setHoldPriority(byteBuf.readUnsignedByte());
    builder.setHopLimit(byteBuf.readUnsignedByte());
    //skip reserved
    byteBuf.skipBytes(ByteBufWriteUtil.ONE_BYTE_LENGTH);
    final ByteBuf v = byteBuf.readSlice(METRIC_VALUE_F_LENGTH);
    builder.setBandwidth(new Bandwidth(ByteArray.readAllBytes(v)));
    builder.setIncludeAny(new AttributeFilter(byteBuf.readUnsignedInt()));
    builder.setExcludeAny(new AttributeFilter(byteBuf.readUnsignedInt()));
    return builder.build();
}

From source file:org.opendaylight.protocol.rsvp.parser.impl.te.ReoptimizationBandwidthObjectParser.java

License:Open Source License

@Override
protected RsvpTeObject localParseObject(final ByteBuf byteBuf) throws RSVPParsingException {
    final ReoptimizationBandwidthObjectBuilder builder = new ReoptimizationBandwidthObjectBuilder();
    final ByteBuf v = byteBuf.readSlice(METRIC_VALUE_F_LENGTH);
    builder.setBandwidth(new Bandwidth(ByteArray.readAllBytes(v)));
    return builder.build();
}

From source file:org.opendaylight.protocol.rsvp.parser.impl.te.RequiredAttributesObjectParser.java

License:Open Source License

@Override
protected RsvpTeObject localParseObject(final ByteBuf byteBuf) throws RSVPParsingException {
    final LspRequiredAttributesObjectBuilder builder = new LspRequiredAttributesObjectBuilder();

    final List<SubobjectContainer> subObjectList = new ArrayList<>();
    while (byteBuf.isReadable()) {
        final int type = byteBuf.readUnsignedShort();
        final int length = byteBuf.readUnsignedShort();
        final ByteBuf value = byteBuf.readSlice(length);
        final SubobjectContainerBuilder subObj = new SubobjectContainerBuilder();
        if (type == AttributesObjectParser.FLAG_TLV_TYPE) {
            subObj.setLspSubobject(/*from   w  w  w. j a va2 s  .co  m*/
                    new FlagsTlvBuilder().setFlagContainer(AttributesObjectParser.parseFlag(value)).build());
        } else {
            LOG.warn("Lsp Attributes Subobject type {} not supported", type);
        }
        subObjectList.add(subObj.build());
    }

    return builder.setLspAttributesObject(
            new LspAttributesObjectBuilder().setSubobjectContainer(subObjectList).build()).build();
}

From source file:org.opendaylight.protocol.rsvp.parser.impl.te.SessionAttributeLspObjectParser.java

License:Open Source License

@Override
protected RsvpTeObject localParseObject(final ByteBuf byteBuf) throws RSVPParsingException {
    final BasicSessionAttributeObjectBuilder builder = new BasicSessionAttributeObjectBuilder();
    builder.setSetupPriority(byteBuf.readUnsignedByte());
    builder.setHoldPriority(byteBuf.readUnsignedByte());
    final BitArray bs = BitArray.valueOf(byteBuf.readByte());
    builder.setLocalProtectionDesired(bs.get(LOCAL_PROTECTION));
    builder.setLabelRecordingDesired(bs.get(LABEL_RECORDING));
    builder.setSeStyleDesired(bs.get(SE_STYLE));
    final short nameLenght = byteBuf.readUnsignedByte();
    final ByteBuf auxBuf = byteBuf.readSlice(nameLenght);
    final String name = new String(ByteArray.readAllBytes(auxBuf), StandardCharsets.US_ASCII);
    builder.setSessionName(name);//  ww w  .ja va  2  s .  c om
    return builder.build();
}

From source file:org.opendaylight.protocol.rsvp.parser.impl.te.SessionAttributeLspRaObjectParser.java

License:Open Source License

@Override
protected RsvpTeObject localParseObject(final ByteBuf byteBuf) throws RSVPParsingException {
    final SessionAttributeObjectWithResourcesAffinitiesBuilder builder = new SessionAttributeObjectWithResourcesAffinitiesBuilder();
    builder.setIncludeAny(new AttributeFilter(byteBuf.readUnsignedInt()));
    builder.setExcludeAny(new AttributeFilter(byteBuf.readUnsignedInt()));
    builder.setIncludeAll(new AttributeFilter(byteBuf.readUnsignedInt()));
    builder.setSetupPriority(byteBuf.readUnsignedByte());
    builder.setHoldPriority(byteBuf.readUnsignedByte());
    final BitArray bs = BitArray.valueOf(byteBuf.readByte());
    builder.setLocalProtectionDesired(bs.get(SessionAttributeLspObjectParser.LOCAL_PROTECTION));
    builder.setLabelRecordingDesired(bs.get(SessionAttributeLspObjectParser.LABEL_RECORDING));
    builder.setSeStyleDesired(bs.get(SessionAttributeLspObjectParser.SE_STYLE));
    final short nameLenght = byteBuf.readUnsignedByte();
    final ByteBuf auxBuf = byteBuf.readSlice(nameLenght);
    final String name = new String(ByteArray.readAllBytes(auxBuf), StandardCharsets.US_ASCII);
    builder.setSessionName(name);//from w w  w . j a  va2s.  c o  m
    return builder.build();
}

From source file:org.opendaylight.protocol.rsvp.parser.spi.subobjects.EROSubobjectListParser.java

License:Open Source License

public List<SubobjectContainer> parseList(final ByteBuf buffer) throws RSVPParsingException {
    // Explicit approval of empty ERO
    Preconditions.checkArgument(buffer != null, "Array of bytes is mandatory. Can't be null.");
    final List<SubobjectContainer> subs = new ArrayList<>();
    while (buffer.isReadable()) {
        final boolean loose = ((buffer.getUnsignedByte(buffer.readerIndex())
                & (1 << Values.FIRST_BIT_OFFSET)) != 0) ? true : false;
        final int type = (buffer.readUnsignedByte() & Values.BYTE_MAX_VALUE_BYTES)
                & ~(1 << Values.FIRST_BIT_OFFSET);
        final int length = buffer.readUnsignedByte() - HEADER_LENGTH;
        if (length > buffer.readableBytes()) {
            throw new RSVPParsingException(
                    "Wrong length specified. Passed: " + length + "; Expected: <= " + buffer.readableBytes());
        }/*from w w w . j av a  2s.  c om*/
        LOG.debug("Attempt to parse subobject from bytes: {}", ByteBufUtil.hexDump(buffer));
        final SubobjectContainer sub = this.subobjReg.parseSubobject(type, buffer.readSlice(length), loose);
        if (sub == null) {
            LOG.warn("Unknown subobject type: {}. Ignoring subobject.", type);
        } else {
            LOG.debug("Subobject was parsed. {}", sub);
            subs.add(sub);
        }
    }
    return subs;
}

From source file:org.opendaylight.protocol.rsvp.parser.spi.subobjects.RROSubobjectListParser.java

License:Open Source License

public List<SubobjectContainer> parseList(final ByteBuf buffer) throws RSVPParsingException {
    Preconditions.checkArgument(buffer != null && buffer.isReadable(),
            "Array of bytes is mandatory. Can't be null or empty.");
    final List<SubobjectContainer> subs = new ArrayList<>();
    while (buffer.isReadable()) {
        final int type = buffer.readUnsignedByte();
        final int length = buffer.readUnsignedByte() - HEADER_LENGTH;
        if (length > buffer.readableBytes()) {
            throw new RSVPParsingException(
                    "Wrong length specified. Passed: " + length + "; Expected: <= " + buffer.readableBytes());
        }//from w  ww  .  j  a v a  2s  .c  o  m
        LOG.debug("Attempt to parse subobject from bytes: {}", ByteBufUtil.hexDump(buffer));
        final SubobjectContainer sub = this.subobjReg.parseSubobject(type, buffer.readSlice(length));
        if (sub == null) {
            LOG.warn("Unknown subobject type: {}. Ignoring subobject.", type);
        } else {
            LOG.debug("Subobject was parsed. {}", sub);
            subs.add(sub);
        }
    }
    return subs;
}