1 package org.opendaylight.lispflowmapping.implementation.serializer.address;
3 import java.nio.ByteBuffer;
5 import org.opendaylight.lispflowmapping.implementation.util.ByteUtil;
6 import org.opendaylight.lispflowmapping.type.lisp.address.LispAddress;
7 import org.opendaylight.lispflowmapping.type.lisp.address.LispApplicationDataLCAFAddress;
9 public class LispApplicationDataLCAFAddressSerializer extends LispLCAFAddressSerializer {
11 private static final LispApplicationDataLCAFAddressSerializer INSTANCE = new LispApplicationDataLCAFAddressSerializer();
13 // Private constructor prevents instantiation from other classes
14 private LispApplicationDataLCAFAddressSerializer() {
17 public static LispApplicationDataLCAFAddressSerializer getInstance() {
22 protected short getLcafLength(LispAddress lispAddress) {
23 return (short) (Length.ALL_FIELDS + LispAddressSerializer.getInstance().getAddressSize(((LispApplicationDataLCAFAddress)lispAddress).getAddress()));
27 protected void serializeData(ByteBuffer buffer, LispAddress lispAddress) {
28 LispApplicationDataLCAFAddress applicationDataAddress = ((LispApplicationDataLCAFAddress) lispAddress);
29 buffer.put(ByteUtil.partialIntToByteArray(applicationDataAddress.getIPTos(), Length.TOC));
30 buffer.put(applicationDataAddress.getProtocol());
31 buffer.putShort(applicationDataAddress.getLocalPort());
32 buffer.putShort(applicationDataAddress.getRemotePort());
33 LispAddressSerializer.getInstance().serialize(buffer, ((LispApplicationDataLCAFAddress) lispAddress).getAddress());
37 protected LispApplicationDataLCAFAddress deserializeData(ByteBuffer buffer, byte res2, short length) {
39 LispApplicationDataLCAFAddress applicationDataAddress = new LispApplicationDataLCAFAddress(res2);
40 byte[] rawIPTos = new byte[3];
42 applicationDataAddress.setIPTos(ByteUtil.getPartialInt(rawIPTos));
43 applicationDataAddress.setProtocol(buffer.get());
44 applicationDataAddress.setLocalPort(buffer.getShort());
45 applicationDataAddress.setRemotePort(buffer.getShort());
46 LispAddress address = LispAddressSerializer.getInstance().deserialize(buffer);
47 applicationDataAddress.setAddress(address);
49 return applicationDataAddress;
52 private interface Length {
57 int ALL_FIELDS = LOCAL_PORT + REMOTE_PORT + TOC + PROTOCOL;