fixed northbound source dest mapping and auth TELSDN-644: #close
[lispflowmapping.git] / mappingservice / implementation / src / main / java / org / opendaylight / lispflowmapping / implementation / serializer / address / LispListLCAFAddressSerializer.java
1 package org.opendaylight.lispflowmapping.implementation.serializer.address;
2
3 import java.nio.ByteBuffer;
4 import java.util.ArrayList;
5 import java.util.List;
6
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;
16
17 public class LispListLCAFAddressSerializer extends LispLCAFAddressSerializer {
18
19     private static final LispListLCAFAddressSerializer INSTANCE = new LispListLCAFAddressSerializer();
20
21     // Private constructor prevents instantiation from other classes
22     private LispListLCAFAddressSerializer() {
23     }
24
25     public static LispListLCAFAddressSerializer getInstance() {
26         return INSTANCE;
27     }
28
29     @Override
30     protected short getLcafLength(LispAFIAddress lispAddress) {
31         short totalSize = 0;
32         for (Addresses address : ((LcafListAddress) lispAddress).getAddresses()) {
33             totalSize += LispAddressSerializer.getInstance().getAddressSize((LispAFIAddress) address.getPrimitiveAddress());
34         }
35         return totalSize;
36     }
37
38     @Override
39     protected void serializeData(ByteBuffer buffer, LispAFIAddress lispAddress) {
40         for (Addresses address : ((LcafListAddress) lispAddress).getAddresses()) {
41             LispAddressSerializer.getInstance().serialize(buffer, (LispAFIAddress) address.getPrimitiveAddress());
42         }
43     }
44
45     @Override
46     public LcafListAddress deserializeData(ByteBuffer buffer, byte res2, short length) {
47         List<Addresses> addresses = new ArrayList<Addresses>();
48         while (length > 0) {
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());
52         }
53         return new LcafListBuilder().setAddresses(addresses).setAfi(AddressFamilyNumberEnum.LCAF.getIanaCode())
54                 .setLcafType((short) LispCanonicalAddressFormatEnum.LIST.getLispCode()).build();
55     }
56 }