in src/main/scala/org/apache/pekko/persistence/dynamodb/snapshot/DynamoDBSnapshotRequests.scala [151:181]
private def toSnapshotItem(persistenceId: String, sequenceNr: Long, timestamp: Long, snapshot: Any): Future[Item] = {
val item: Item = new JHMap
item.put(Key, S(messagePartitionKey(persistenceId)))
item.put(SequenceNr, N(sequenceNr))
item.put(Timestamp, N(timestamp))
val snapshotData = snapshot.asInstanceOf[AnyRef]
val serializer = serialization.findSerializerFor(snapshotData)
val manifest = Serializers.manifestFor(serializer, snapshotData)
val fut = serializer match {
case asyncSer: AsyncSerializer =>
Serialization.withTransportInformation(context.system.asInstanceOf[ExtendedActorSystem]) { () =>
asyncSer.toBinaryAsync(snapshotData)
}
case _ =>
Future {
// Serialization.serialize adds transport info
serialization.serialize(snapshotData).get
}
}
fut.map { data =>
item.put(PayloadData, B(data))
if (manifest.nonEmpty) {
item.put(SerializerManifest, S(manifest))
}
item.put(SerializerId, N(serializer.identifier))
item
}
}