public interface ByteBufferSerializer
ByteBuffer
representing that object.
Implementations should typically extend SerializerWithStringManifest
and
in addition to the ByteBuffer
based toBinary
and fromBinary
methods also
implement the array based toBinary
and fromBinary
methods. The array based
methods will be used when ByteBuffer
is not used, e.g. in Akka Persistence.
Note that the array based methods can for example be implemented by delegation like this:
// you need to know the maximum size in bytes of the serialized messages
val pool = new akka.io.DirectByteBufferPool(defaultBufferSize = 1024 * 1024, maxPoolEntries = 10)
// Implement this method for compatibility with `SerializerWithStringManifest`.
override def toBinary(o: AnyRef): Array[Byte] = {
val buf = pool.acquire()
try {
toBinary(o, buf)
buf.flip()
val bytes = Array.ofDim[Byte](buf.remaining)
buf.get(bytes)
bytes
} finally {
pool.release(buf)
}
}
// Implement this method for compatibility with `SerializerWithStringManifest`.
override def fromBinary(bytes: Array[Byte], manifest: String): AnyRef =
fromBinary(ByteBuffer.wrap(bytes), manifest)
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
fromBinary(java.nio.ByteBuffer buf,
java.lang.String manifest)
Produces an object from a
ByteBuffer , with an optional type-hint;
the class should be loaded using ActorSystem.dynamicAccess. |
void |
toBinary(java.lang.Object o,
java.nio.ByteBuffer buf)
Serializes the given object into the
ByteBuffer . |
void toBinary(java.lang.Object o, java.nio.ByteBuffer buf)
ByteBuffer
.o
- (undocumented)buf
- (undocumented)java.lang.Object fromBinary(java.nio.ByteBuffer buf, java.lang.String manifest)
ByteBuffer
, with an optional type-hint;
the class should be loaded using ActorSystem.dynamicAccess.buf
- (undocumented)manifest
- (undocumented)