support lcaf traffic engineering TELSDN-178: #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
23         @Override
24         protected short getLcafLength(LispAddress lispAddress) {
25         short totalSize = 0;
26         for (LispAddress address : ((LispListLCAFAddress)lispAddress).getAddresses()) {
27             totalSize += LispAddressSerializer.getInstance().getAddressSize(address);
28         }
29         return totalSize;
30     }
31
32         @Override
33         protected void serializeData(ByteBuffer buffer, LispAddress lispAddress) {
34         for (LispAddress address : ((LispListLCAFAddress)lispAddress).getAddresses()) {
35             LispAddressSerializer.getInstance().serialize(buffer, address);
36         }
37     }
38         
39         @Override
40         public LispListLCAFAddress deserializeData(ByteBuffer buffer, byte res2, short length) {
41         List<LispAddress> addresses = new ArrayList<LispAddress>();
42         while (length > 0) {
43             LispAddress address = LispAddressSerializer.getInstance().deserialize(buffer);
44             length -= LispAddressSerializer.getInstance().getAddressSize(address);
45             addresses.add(address);
46         }
47         return new LispListLCAFAddress(res2, addresses);
48     }
49         
50 }