Created
November 30, 2019 14:45
-
-
Save mostr/755c9ad7980313eb713a5d3026d0ea7f to your computer and use it in GitHub Desktop.
Akka references serialization with Protobufs - 1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// allow serialization of akka goodies, e.g. streamrefs that we use | |
object AkkaRefsSerializationOps { | |
def toProtoPayload(akkaRefToSerialize: AnyRef)(implicit system: ActorSystem): SerializedAkkaPayload = { | |
val ext = SerializationExtension(system) | |
val serializer = ext.findSerializerFor(akkaRefToSerialize) | |
val manifest = Serializers.manifestFor(serializer, akkaRefToSerialize) | |
val sinkSerialized = ByteString.copyFrom(serializer.toBinary(akkaRefToSerialize)) | |
SerializedAkkaPayload(sinkSerialized, manifest, serializer.identifier) | |
} | |
def fromProtoPayload[T](proto: SerializedAkkaPayload)(implicit system: ActorSystem): T = { | |
val sinkRef = SerializationExtension(system).deserialize(proto.payload.toByteArray, proto.serializerId.toInt, proto.manifest) | |
sinkRef.get.asInstanceOf[T] | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment