1 package org.opendaylight.lispflowmapping.implementation.serializer.address;
3 import java.nio.ByteBuffer;
4 import java.util.ArrayList;
7 import org.opendaylight.lispflowmapping.implementation.util.LispAFIConvertor;
8 import org.opendaylight.lispflowmapping.type.AddressFamilyNumberEnum;
9 import org.opendaylight.lispflowmapping.type.LispCanonicalAddressFormatEnum;
10 import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.LcafListAddress;
11 import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.LispAFIAddress;
12 import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.lcaflistaddress.Addresses;
13 import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.lcaflistaddress.AddressesBuilder;
14 import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.lispaddress.lispaddresscontainer.address.LcafListBuilder;
15 import org.opendaylight.yang.gen.v1.lispflowmapping.rev131031.lispsimpleaddress.PrimitiveAddress;
17 public class LispListLCAFAddressSerializer extends LispLCAFAddressSerializer {
19 private static final LispListLCAFAddressSerializer INSTANCE = new LispListLCAFAddressSerializer();
21 // Private constructor prevents instantiation from other classes
22 private LispListLCAFAddressSerializer() {
25 public static LispListLCAFAddressSerializer getInstance() {
30 protected short getLcafLength(LispAFIAddress lispAddress) {
32 for (Addresses address : ((LcafListAddress) lispAddress).getAddresses()) {
33 totalSize += LispAddressSerializer.getInstance().getAddressSize((LispAFIAddress) address.getPrimitiveAddress());
39 protected void serializeData(ByteBuffer buffer, LispAFIAddress lispAddress) {
40 for (Addresses address : ((LcafListAddress) lispAddress).getAddresses()) {
41 LispAddressSerializer.getInstance().serialize(buffer, (LispAFIAddress) address.getPrimitiveAddress());
46 public LcafListAddress deserializeData(ByteBuffer buffer, byte res2, short length) {
47 List<Addresses> addresses = new ArrayList<Addresses>();
49 PrimitiveAddress address = LispAFIConvertor.toPrimitive(LispAddressSerializer.getInstance().deserialize(buffer));
50 length -= LispAddressSerializer.getInstance().getAddressSize((LispAFIAddress) address);
51 addresses.add(new AddressesBuilder().setPrimitiveAddress((PrimitiveAddress) address).build());
53 return new LcafListBuilder().setAddresses(addresses).setAfi(AddressFamilyNumberEnum.LCAF.getIanaCode())
54 .setLcafType((short) LispCanonicalAddressFormatEnum.LIST.getLispCode()).build();