Interface ByteBufferSerializer

  • All Known Implementing Classes:
    ByteArraySerializer, ByteStringSerializer, DisabledJavaSerializer, IntSerializer, LongSerializer, StringSerializer

    public interface ByteBufferSerializer
    Serializer between an object and a 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 = new Array[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)
    
     
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method 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.
    • Method Detail

      • fromBinary

        java.lang.Object fromBinary​(java.nio.ByteBuffer buf,
                                    java.lang.String manifest)
                             throws java.io.NotSerializableException
        Produces an object from a ByteBuffer, with an optional type-hint; the class should be loaded using ActorSystem.dynamicAccess.
        Throws:
        java.io.NotSerializableException
      • toBinary

        void toBinary​(java.lang.Object o,
                      java.nio.ByteBuffer buf)
        Serializes the given object into the ByteBuffer.