2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.protocol.bgp.linkstate.spi;
10 import io.netty.buffer.ByteBuf;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.Identifier;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.ProtocolId;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.ObjectType;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.destination.CLinkstateDestination;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.destination.CLinkstateDestinationBuilder;
16 import org.opendaylight.yangtools.yang.common.netty.ByteBufUtils;
18 public abstract class AbstractNlriTypeCodec implements NlriTypeCaseParser, NlriTypeCaseSerializer {
20 public final CLinkstateDestination parseTypeNlri(final ByteBuf nlri) {
21 return new CLinkstateDestinationBuilder()
22 .setProtocolId(ProtocolId.forValue(nlri.readUnsignedByte()))
23 .setIdentifier(new Identifier(ByteBufUtils.readUint64(nlri)))
24 .setObjectType(parseObjectType(nlri))
29 public final void serializeTypeNlri(final CLinkstateDestination nlriType, final ByteBuf byteAggregator) {
30 byteAggregator.writeByte(nlriType.getProtocolId().getIntValue());
31 ByteBufUtils.write(byteAggregator, nlriType.getIdentifier().getValue());
32 serializeObjectType(nlriType.getObjectType(), byteAggregator);
35 protected abstract ObjectType parseObjectType(ByteBuf buffer);
37 protected abstract void serializeObjectType(ObjectType objectType, ByteBuf buffer);