scorex.serialization.Deser.scala Maven / Gradle / Ivy
The newest version!
package scorex.serialization
import com.google.common.primitives.Shorts
import scala.util.Try
/**
* Interface for objects, that can deserialize bytes to instance of T
*/
trait Deser[T] {
def parseBytes(bytes: Array[Byte]): Try[T]
protected def parseArraySize(bytes: Array[Byte], position: Int): (Array[Byte], Int) = {
val length = Shorts.fromByteArray(bytes.slice(position, position + 2))
(bytes.slice(position + 2, position + 2 + length), position + 2 + length)
}
protected def parseOption(bytes: Array[Byte], position: Int, length: Int): (Option[Array[Byte]], Int) = {
if (bytes.slice(position, position + 1).head == (1: Byte)) {
val b = bytes.slice(position + 1, position + 1 + length)
(Some(b), position + 1 + length)
} else (None, position + 1)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy