All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.djutils.serialization.serializers.Serializer Maven / Gradle / Ivy

There is a newer version: 2.2.2
Show newest version
package org.djutils.serialization.serializers;

import org.djutils.serialization.EndianUtil;
import org.djutils.serialization.SerializationException;

/**
 * Interface to serialize and deserialize data.
 * 

* Copyright (c) 2019-2023 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
* BSD-style license. See DJUTILS License. *

* version Jun 07, 2019
* @author Alexander Verbraeck * @author Peter Knoppers * @param Type of object that can be serialized and deserialized */ public interface Serializer { /** * Compute the number of bytes needed to serialize an object of type T (excluding the byte(s) that indicate that an object * of type T is next in the data stream). * @param object T; Instance of the object * @return int; the number of bytes needed to serialize an object of type T * @throws SerializationException when the object cannot be serialized */ int size(T object) throws SerializationException; /** * Compute the number of bytes needed to serialize an object of type T (including the byte(s) that indicate that an object * of type T is next in the data stream). * @param object T; Instance of the object * @return int; the number of bytes needed to serialize an object of type T * @throws SerializationException when the object cannot be serialized */ int sizeWithPrefix(T object) throws SerializationException; /** * Return the byte representation of the field type. * @return byte */ byte fieldType(); /** * Serialize an object of type T; not including the prefix byte(s). * @param object T; the object to serialize * @param buffer byte[]; buffer for the serialized T * @param pointer Pointer; position in buffer where the first byte of the serialized T will be stored * @param endianUtil EndianUtil; selects bigEndian or littleEndian encoding * @throws SerializationException when a matrix has size zero or is jagged */ void serialize(T object, byte[] buffer, Pointer pointer, EndianUtil endianUtil) throws SerializationException; /** * Serialize an object of type T including the prefix byte(s). * @param object T; the object to serialize * @param buffer byte[]; buffer for the serialized T * @param pointer Pointer; position in buffer where the first byte of the serialized T will be stored * @param endianUtil EndianUtil; selects bigEndian or littleEndian encoding * @throws SerializationException when a matrix has size zero or is jagged */ void serializeWithPrefix(T object, byte[] buffer, Pointer pointer, EndianUtil endianUtil) throws SerializationException; /** * Deserialize an object of type T. The pointer should be on the first byte of the object; i.e. just after the * prefix byte. * @param buffer byte[]; the bytes with serialized data that must be reconstructed into a T * @param pointer Pointer; position in the buffer where the first byte of the serialized T is located * @return T; a T object constructed from the data in the buffer * @param endianUtil EndianUtil; selects bigEndian or littleEndian encoding * @throws SerializationException when the input data cannot be deserialized */ T deSerialize(byte[] buffer, Pointer pointer, EndianUtil endianUtil) throws SerializationException; /** * Return a description of the type of data that this serializer handles. The result of this method should not be * subject to localization because it is used in the SerialDataDecoder to identify the type of a serializer. * @return String; description of the type of data that this serializer handles */ String dataClassName(); /** * Return the number of dimensions of the stored data. * @return int; 0 for plain data, 1 for array, 2 for matrix */ int getNumberOfDimensions(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy