package org.opendaylight.protocol.pcep.spi.pojo;
import org.opendaylight.protocol.concepts.HandlerRegistry;
-import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
+import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
import org.opendaylight.protocol.pcep.spi.TlvParser;
+import org.opendaylight.protocol.pcep.spi.TlvRegistry;
import org.opendaylight.protocol.pcep.spi.TlvSerializer;
import org.opendaylight.protocol.util.Values;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
/**
*
*/
-public final class SimpleTlvHandlerRegistry implements TlvHandlerRegistry {
+public final class SimpleTlvRegistry implements TlvRegistry {
+
private final HandlerRegistry<DataContainer, TlvParser, TlvSerializer> handlers = new HandlerRegistry<>();
public AutoCloseable registerTlvParser(final int tlvType, final TlvParser parser) {
}
@Override
- public TlvParser getTlvParser(final int tlvType) {
- return this.handlers.getParser(tlvType);
+ public Tlv parseTlv(final int type, final byte[] buffer) throws PCEPDeserializerException {
+ Preconditions.checkArgument(type >= 0 && type <= Values.UNSIGNED_SHORT_MAX_VALUE);
+ final TlvParser parser = this.handlers.getParser(type);
+ if (parser == null) {
+ return null;
+ }
+ return parser.parseTlv(buffer);
}
@Override
- public TlvSerializer getTlvSerializer(final Tlv tlv) {
- return this.handlers.getSerializer(tlv.getImplementedInterface());
+ public byte[] serializeTlv(final Tlv tlv) {
+ final TlvSerializer serializer = this.handlers.getSerializer(tlv.getImplementedInterface());
+ if (serializer == null) {
+ return null;
+ }
+ return serializer.serializeTlv(tlv);
}
}