@Override public void serializeObject(final Object object, final ByteBuf buffer) { Preconditions.checkArgument(object instanceof Rp, "Wrong instance of PCEPObject. Passed %s. Needed RPObject.", object.getClass()); final ByteBuf body = Unpooled.buffer(); final Rp rpObj = (Rp) object; final BitArray flags = new BitArray(FLAGS_SIZE); flags.set(R_FLAG_OFFSET, rpObj.isReoptimization()); flags.set(B_FLAG_OFFSET, rpObj.isBiDirectional()); flags.set(O_FLAG_OFFSET, rpObj.isLoose()); flags.set(M_FLAG_OFFSET, rpObj.isMakeBeforeBreak()); flags.set(D_FLAG_OFFSET, rpObj.isOrder()); flags.set(P_FLAG_OFFSET, rpObj.isPathKey()); flags.set(S_FLAG_OFFSET, rpObj.isSupplyOf()); flags.set(F_FLAG_OFFSET, rpObj.isFragmentation()); flags.set(N_FLAG_OFFSET, rpObj.isP2mp()); flags.set(E_FLAG_OFFSET, rpObj.isEroCompression()); final byte[] res = flags.array(); if (rpObj.getPriority() != null) { final byte p = UnsignedBytes.checkedCast(rpObj.getPriority().shortValue()); res[res.length -1] = (byte) (res[res.length -1] | p); } body.writeBytes(res); Preconditions.checkArgument(rpObj.getRequestId() != null, "RequestId is mandatory"); writeUnsignedInt(rpObj.getRequestId().getValue(), body); serializeTlvs(rpObj.getTlvs(), body); ObjectUtil.formatSubobject(TYPE, CLASS, object.isProcessingRule(), object.isIgnore(), body, buffer); }
static void serializePrefixAttributes(final PrefixAttributesCase prefixAttributesCase, final ByteBuf byteAggregator) { final PrefixAttributes prefixAtrributes = prefixAttributesCase.getPrefixAttributes(); if (prefixAtrributes.getIgpBits() != null) { final BitArray igpBit = new BitArray(FLAGS_SIZE); final IgpBits igpBits = prefixAtrributes.getIgpBits(); igpBit.set(UP_DOWN_BIT, igpBits.getUpDown().isUpDown() || igpBits.isIsIsUpDown()); igpBit.set(OSPF_NO_UNICAST, igpBits.isOspfNoUnicast()); igpBit.set(OSPF_LOCAL_ADDRESS, igpBits.isOspfLocalAddress()); igpBit.set(OSPF_PROPAGATE_ADDRESS, igpBits.isOspfPropagateNssa()); TlvUtil.writeTLV(IGP_FLAGS, Unpooled.wrappedBuffer(igpBit.array()), byteAggregator); } serializeRouteTags(prefixAtrributes.getRouteTags(), byteAggregator); serializeExtendedRouteTags(prefixAtrributes.getExtendedTags(), byteAggregator); serializePrefixMetric(prefixAtrributes.getPrefixMetric(), byteAggregator); serializeForwardingAddress(prefixAtrributes.getOspfForwardingAddress(), byteAggregator); serializeSrPrefix(prefixAtrributes.getSrPrefix(), byteAggregator); serializeIpv6SrPrefix(prefixAtrributes.getIpv6SrPrefix(), byteAggregator); serializeSrRange(prefixAtrributes.getSrRange(), byteAggregator); serializeSrBindingLabel(prefixAtrributes.getSrBindingSidLabels(), byteAggregator); }