1 package com.irtimaled.bbor.common.messages;
3 import com.irtimaled.bbor.common.models.AbstractBoundingBox;
4 import com.irtimaled.bbor.common.models.BoundingBoxCuboid;
6 import java.util.HashMap;
8 import java.util.function.BiConsumer;
10 class BoundingBoxSerializer {
11 private static final Map<Class, BiConsumer<AbstractBoundingBox, PayloadBuilder>> serializers = new HashMap<>();
14 serializers.put(BoundingBoxCuboid.class, (bb, pb) -> serializeStructure((BoundingBoxCuboid)bb, pb));
17 static boolean canSerialize(AbstractBoundingBox key) {
18 return serializers.containsKey(key.getClass());
21 static void serialize(AbstractBoundingBox boundingBox, PayloadBuilder builder) {
22 BiConsumer<AbstractBoundingBox, PayloadBuilder> serializer = serializers.get(boundingBox.getClass());
23 if (serializer == null) return;
25 serializer.accept(boundingBox, builder);
28 private static void serializeStructure(BoundingBoxCuboid boundingBox, PayloadBuilder builder) {
29 builder.writeChar('S')
30 .writeInt(boundingBox.getType().hashCode())
31 .writeCoords(boundingBox.getMinCoords())
32 .writeCoords(boundingBox.getMaxCoords());