=str #18890 Polish Source.queue
This commit is contained in:
parent
7e7a2808f1
commit
d5f81e19d1
19 changed files with 565 additions and 332 deletions
|
|
@ -3,19 +3,14 @@
|
|||
*/
|
||||
package akka.stream.impl
|
||||
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
|
||||
import akka.NotUsed
|
||||
import akka.actor._
|
||||
import akka.stream._
|
||||
import akka.stream.impl.AcknowledgePublisher.{ Ok, Rejected }
|
||||
import akka.stream.impl.StreamLayout.Module
|
||||
import akka.util.Timeout
|
||||
import org.reactivestreams._
|
||||
|
||||
import scala.annotation.unchecked.uncheckedVariance
|
||||
import scala.concurrent.duration.{ FiniteDuration, _ }
|
||||
import scala.concurrent.{ Future, Promise }
|
||||
import scala.concurrent.Promise
|
||||
import scala.language.postfixOps
|
||||
|
||||
/**
|
||||
|
|
@ -122,32 +117,3 @@ private[akka] final class ActorRefSource[Out](
|
|||
override def withAttributes(attr: Attributes): Module =
|
||||
new ActorRefSource(bufferSize, overflowStrategy, attr, amendShape(attr))
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL API
|
||||
*/
|
||||
private[akka] final class AcknowledgeSource[Out](bufferSize: Int, overflowStrategy: OverflowStrategy,
|
||||
val attributes: Attributes, shape: SourceShape[Out],
|
||||
timeout: FiniteDuration = 5 seconds)
|
||||
extends SourceModule[Out, SourceQueue[Out]](shape) {
|
||||
|
||||
override def create(context: MaterializationContext) = {
|
||||
import akka.pattern.ask
|
||||
val ref = ActorMaterializer.downcast(context.materializer).actorOf(context,
|
||||
AcknowledgePublisher.props(bufferSize, overflowStrategy))
|
||||
implicit val t = Timeout(timeout)
|
||||
|
||||
(akka.stream.actor.ActorPublisher[Out](ref), new SourceQueue[Out] {
|
||||
implicit val ctx = context.materializer.executionContext
|
||||
override def offer(out: Out): Future[Boolean] = (ref ? out).map {
|
||||
case Ok() ⇒ true
|
||||
case Rejected() ⇒ false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
override protected def newInstance(shape: SourceShape[Out]): SourceModule[Out, SourceQueue[Out]] =
|
||||
new AcknowledgeSource[Out](bufferSize, overflowStrategy, attributes, shape, timeout)
|
||||
override def withAttributes(attr: Attributes): Module =
|
||||
new AcknowledgeSource(bufferSize, overflowStrategy, attr, amendShape(attr), timeout)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue