blob: f702c401505cd0c321b5f2e4eb0609ca04cc79b8 [file] [log] [blame]
Jonathan Hart3930f632015-10-19 12:12:51 -07001/*
Jonathan Hartf4bd0482017-01-27 15:11:18 -08002 * Copyright 2017-present Open Networking Laboratory
Jonathan Hart3930f632015-10-19 12:12:51 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.routing.fpm.protocol;
18
19import org.onlab.packet.DeserializationException;
20
21/**
22 * Decoder for a route attribute.
23 */
24@FunctionalInterface
25public interface RouteAttributeDecoder<A extends RouteAttribute> {
26
27 /**
28 * Decodes the a route attribute from the input buffer.
29 *
30 * @param length length of the attribute
31 * @param type type of the attribute
32 * @param value input buffer
33 * @return route attribute
34 * @throws DeserializationException if a route attribute could not be
35 * decoded from the input buffer
36 */
37 A decodeAttribute(int length, int type, byte[] value)
38 throws DeserializationException;
39}