add distinguished name afi TELSDN-56: #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.type.lisp.address.LispAddress;
8 import org.opendaylight.lispflowmapping.type.lisp.address.LispListLCAFAddress;
9
10 public class LispListLCAFAddressSerializer extends LispLCAFAddressSerializer {
11
12     private static final LispListLCAFAddressSerializer INSTANCE = new LispListLCAFAddressSerializer();
13
14     // Private constructor prevents instantiation from other classes
15     private LispListLCAFAddressSerializer() {
16     }
17
18     public static LispListLCAFAddressSerializer getInstance() {
19         return INSTANCE;
20     }
21
22     @Override
23     protected short getLcafLength(LispAddress lispAddress) {
24         short totalSize = 0;
25         for (LispAddress address : ((LispListLCAFAddress) lispAddress).getAddresses()) {
26             totalSize += LispAddressSerializer.getInstance().getAddressSize(address);
27         }
28         return totalSize;
29     }
30
31     @Override
32     protected void serializeData(ByteBuffer buffer, LispAddress lispAddress) {
33         for (LispAddress address : ((LispListLCAFAddress) lispAddress).getAddresses()) {
34             LispAddressSerializer.getInstance().serialize(buffer, address);
35         }
36     }
37
38     @Override
39     public LispListLCAFAddress deserializeData(ByteBuffer buffer, byte res2, short length) {
40         List<LispAddress> addresses = new ArrayList<LispAddress>();
41         while (length > 0) {
42             LispAddress address = LispAddressSerializer.getInstance().deserialize(buffer);
43             length -= LispAddressSerializer.getInstance().getAddressSize(address);
44             addresses.add(address);
45         }
46         return new LispListLCAFAddress(res2, addresses);
47     }
48
49 }