-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSerializer.java
35 lines (30 loc) · 1013 Bytes
/
Serializer.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package org.machinemc.paklet.serialization;
import org.machinemc.paklet.DataVisitor;
import org.machinemc.paklet.modifiers.SerializeWith;
/**
* Serializer for custom packet fields.
* <p>
* To mark the serializer as default for fields of a certain type use {@link DefaultSerializer} annotation.
* <p>
* To use serializer for a single field of a packet use {@link SerializeWith} or its annotation alias.
*
* @param <T> type of the object to serialize
*/
public interface Serializer<T> {
/**
* Serializes the given value to the data visitor.
*
* @param context serialization context
* @param visitor visitor
* @param t value to serialize
*/
void serialize(SerializerContext context, DataVisitor visitor, T t);
/**
* Deserializes a value from the data visitor.
*
* @param context serialization context
* @param visitor visitor
* @return deserialized value
*/
T deserialize(SerializerContext context, DataVisitor visitor);
}