[ONOS-4718] Initial implementation of LISP address deserializer
Change-Id: I522e16e7fd197380cf4c99038561fe9aa8f93730
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispDistinguishedNameAddress.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispDistinguishedNameAddress.java
index d5fbc988..e0d631f 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispDistinguishedNameAddress.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/types/LispDistinguishedNameAddress.java
@@ -15,6 +15,9 @@
*/
package org.onosproject.lisp.msg.types;
+import io.netty.buffer.ByteBuf;
+import org.onosproject.lisp.msg.exceptions.LispParseError;
+
import java.util.Objects;
import static com.google.common.base.MoreObjects.toStringHelper;
@@ -69,4 +72,24 @@
.add("distinguished name", distinguishedName)
.toString();
}
+
+ /**
+ * Distinguished name address reader class.
+ */
+ public static class DistinguishedNameAddressReader
+ implements LispAddressReader<LispDistinguishedNameAddress> {
+
+ @Override
+ public LispDistinguishedNameAddress readFrom(ByteBuf byteBuf) throws LispParseError {
+
+ StringBuilder sb = new StringBuilder();
+ byte character = byteBuf.readByte();
+ while (character != 0) {
+ sb.append((char) character);
+ character = byteBuf.readByte();
+ }
+
+ return new LispDistinguishedNameAddress(sb.toString());
+ }
+ }
}