package serializers.msgpack;
import java.io.IOException;
import org.msgpack.packer.Packer;
import org.msgpack.template.AbstractTemplate;
import org.msgpack.template.NotNullableTemplate;
import org.msgpack.template.Template;
import org.msgpack.template.Templates;
import org.msgpack.unpacker.Unpacker;
import data.media.Image;
import data.media.Image.Size;
final class ImageTemplate extends AbstractTemplate<Image> {
static final Template<Image> INSTANCE = new ImageTemplate();
static final Template<Image.Size> imageSizeTemplate =
new NotNullableTemplate<Image.Size>(ImageSizeTemplate.INSTANCE);
@Override
public void write(Packer packer, Image v, boolean required) throws IOException {
packer.writeArrayBegin(5);
Templates.TString.write(packer, v.uri, true);
Templates.TString.write(packer, v.title, false);
Templates.TInteger.write(packer, v.width, true);
Templates.TInteger.write(packer, v.height, true);
imageSizeTemplate.write(packer, v.size);
packer.writeArrayEnd();
}
@Override
public Image read(Unpacker unpacker, Image to, boolean required) throws IOException {
unpacker.readArrayBegin();
to = new Image(
Templates.TString.read(unpacker, null, true),
Templates.TString.read(unpacker, null, false),
Templates.TInteger.read(unpacker, null, true),
Templates.TInteger.read(unpacker, null, true),
imageSizeTemplate.read(unpacker, null, true)
);
unpacker.readArrayEnd();
return to;
}
}