MessageEncoder.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 MessageEncoder<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}