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
9 package org.opendaylight.protocol.bgp.evpn.impl.esi.types;
11 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractAS;
12 import static org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractLD;
13 import static org.opendaylight.protocol.util.ByteBufWriteUtil.writeUnsignedInt;
15 import com.google.common.base.Preconditions;
16 import io.netty.buffer.ByteBuf;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev171213.EsiType;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev171213.esi.Esi;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev171213.esi.esi.AsGeneratedCase;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev171213.esi.esi.AsGeneratedCaseBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev171213.esi.esi.as.generated._case.AsGenerated;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev171213.esi.esi.as.generated._case.AsGeneratedBuilder;
24 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
26 final class ASGenParser extends AbstractEsiType {
29 public void serializeBody(final Esi esi, final ByteBuf body) {
30 Preconditions.checkArgument(esi instanceof AsGeneratedCase,
31 "Unknown esi instance. Passed %s. Needed AsGeneratedCase.", esi.getClass());
32 final AsGenerated asGen = ((AsGeneratedCase) esi).getAsGenerated();
33 writeUnsignedInt(asGen.getAs().getValue(), body);
34 writeUnsignedInt(asGen.getLocalDiscriminator(), body);
35 body.writeZero(ZERO_BYTE);
39 protected EsiType getType() {
40 return EsiType.AsGenerated;
44 public Esi serializeEsi(final ContainerNode esi) {
45 final AsGeneratedBuilder builder = new AsGeneratedBuilder();
46 builder.setLocalDiscriminator(extractLD(esi));
47 builder.setAs(extractAS(esi));
48 return new AsGeneratedCaseBuilder().setAsGenerated(builder.build()).build();
52 public Esi parseEsi(final ByteBuf buffer) {
53 final AsGenerated asGen = new AsGeneratedBuilder().setAs(new AsNumber(buffer.readUnsignedInt()))
54 .setLocalDiscriminator(buffer.readUnsignedInt()).build();
55 return new AsGeneratedCaseBuilder().setAsGenerated(asGen).build();