def toStorageRepresentation[Offset]()

in core/src/main/scala/org/apache/pekko/projection/internal/OffsetSerialization.scala [94:122]


  def toStorageRepresentation[Offset](
      id: ProjectionId,
      offset: Offset,
      mergeable: Boolean = false): StorageRepresentation = {
    val reps = offset match {
      case s: String                => SingleOffset(id, StringManifest, s, mergeable)
      case l: Long                  => SingleOffset(id, LongManifest, l.toString, mergeable)
      case i: Int                   => SingleOffset(id, IntManifest, i.toString, mergeable)
      case seq: query.Sequence      => SingleOffset(id, SequenceManifest, seq.value.toString, mergeable)
      case tbu: query.TimeBasedUUID => SingleOffset(id, TimeBasedUUIDManifest, tbu.value.toString, mergeable)
      case mrg: MergeableOffset[_] =>
        val list = mrg.entries.map {
          case (key, innerOffset) =>
            toStorageRepresentation(ProjectionId(id.name, key), innerOffset, mergeable = true)
              .asInstanceOf[SingleOffset]
        }.toList

        MultipleOffsets(list)
      case _ =>
        val obj = offset.asInstanceOf[AnyRef]
        val serializer = serialization.findSerializerFor(obj)
        val serializerId = serializer.identifier
        val serializerManifest = Serializers.manifestFor(serializer, obj)
        val bytes = serializer.toBinary(obj)
        val offsetStr = Base64.getEncoder.encodeToString(bytes)
        SingleOffset(id, s"$serializerId:$serializerManifest", offsetStr)
    }
    reps
  }