He-Pin commented on code in PR #1870:
URL: https://github.com/apache/pekko/pull/1870#discussion_r2108085600


##########
stream/src/main/scala/org/apache/pekko/stream/impl/fusing/Ops.scala:
##########
@@ -2337,13 +2338,25 @@ private[pekko] final class StatefulMapConcat[In, 
Out](val f: () => In => Iterabl
 
   override def initialAttributes: Attributes = 
DefaultAttributes.statefulMapConcat and SourceLocation.forLambda(f)
 
+  private def adaptToAccumulator: StatefulMapConcatAccumulator[In, Out] = new 
StatefulMapConcatAccumulator[In, Out] {
+    private val mapper = f()
+    final override def apply(in: In): IterableOnce[Out] = mapper(in)
+    final override def onComplete(): IterableOnce[Out] = mapper match {
+      case acc: StatefulMapConcatAccumulator[In, Out] @unchecked => 
acc.onComplete()
+      case acc: pekko.stream.javadsl.StatefulMapConcatAccumulator[In, Out] 
@unchecked =>
+        import pekko.util.ccompat.JavaConverters._
+        acc.onComplete().asScala
+      case _ => Nil
+    }
+  }
+
   def createLogic(inheritedAttributes: Attributes) = new 
GraphStageLogic(shape) with InHandler with OutHandler {
-    lazy val decider = 
inheritedAttributes.mandatoryAttribute[SupervisionStrategy].decider
-    var currentIterator: Iterator[Out] = _
-    var plainFun = f()
-    val contextPropagation = ContextPropagation()
+    private lazy val decider = 
inheritedAttributes.mandatoryAttribute[SupervisionStrategy].decider
+    private var currentIterator: Iterator[Out] = _
+    private var accumulator: StatefulMapConcatAccumulator[In, Out] = 
adaptToAccumulator

Review Comment:
   1. we need to support the old `f: () => Out => IterableOnce[T]`, and the 
`f`'s result needs to be adapted to `StatefulMapConcatAccumulator` and add the 
`onComplete` method, jvm's jit will do the inline 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@pekko.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@pekko.apache.org
For additional commands, e-mail: notifications-h...@pekko.apache.org

Reply via email to