misc/persolijn

protobuf-native/src/main/java/protobuf/MessageDecoder.java in master
Repositories | Summary | Log | Files

MessageDecoder.java (1178B) download


 1package protobuf;
 2
 3import java.io.ByteArrayInputStream;
 4import java.io.InputStream;
 5import java.util.Iterator;
 6
 7/**
 8 * Functional interface representing a message parser for Protobuf data.
 9 *
10 * @param <T> The type of the parsed message.
11 */
12@FunctionalInterface
13public interface MessageDecoder<T> {
14
15    /**
16     * Parses a byte array as a message.
17     *
18     * @param input The byte array containing Protobuf data.
19     * @return The parsed message.
20     */
21    default T parse(byte[] input) {
22        return parse(new ByteArrayInputStream(input), input.length);
23    }
24
25    /**
26     * Parses an input stream with a specified length as a message.
27     *
28     * @param input  The input stream containing Protobuf data.
29     * @param length The length of the Protobuf data in the input stream.
30     * @return The parsed message.
31     */
32    default T parse(InputStream input, int length) {
33        return parse(new MessageIterator(input, length));
34    }
35
36    /**
37     * Parses Protobuf data using a custom iterator.
38     *
39     * @param tags The iterator providing Protobuf data elements.
40     * @return The parsed message.
41     */
42    T parse(Iterator<ProtobufReader> tags);
43}