Support cancellation propagation in StreamRefs #28317

This commit is contained in:
Johan Andrén 2020-01-20 10:28:26 +01:00 committed by GitHub
parent 41ef4bb66e
commit fc0c98e17a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 663 additions and 212 deletions

View file

@ -26,6 +26,7 @@ private[akka] final class StreamRefSerializer(val system: ExtendedActorSystem)
private[this] val SourceRefManifest = "E"
private[this] val SinkRefManifest = "F"
private[this] val OnSubscribeHandshakeManifest = "G"
private[this] val AckManifest = "H"
override def manifest(o: AnyRef): String = o match {
// protocol
@ -41,6 +42,7 @@ private[akka] final class StreamRefSerializer(val system: ExtendedActorSystem)
// case _: MaterializedSourceRef[_] => SourceRefManifest
case _: SinkRefImpl[_] => SinkRefManifest
// case _: MaterializedSinkRef[_] => SinkRefManifest
case StreamRefsProtocol.Ack => AckManifest
}
override def toBinary(o: AnyRef): Array[Byte] = o match {
@ -57,6 +59,7 @@ private[akka] final class StreamRefSerializer(val system: ExtendedActorSystem)
// case ref: MaterializedSinkRef[_] => ??? // serializeSinkRef(ref).toByteArray
case ref: SourceRefImpl[_] => serializeSourceRef(ref).toByteArray
// case ref: MaterializedSourceRef[_] => serializeSourceRef(ref.).toByteArray
case StreamRefsProtocol.Ack => Array.emptyByteArray
}
override def fromBinary(bytes: Array[Byte], manifest: String): AnyRef = manifest match {
@ -69,6 +72,7 @@ private[akka] final class StreamRefSerializer(val system: ExtendedActorSystem)
// refs
case SinkRefManifest => deserializeSinkRef(bytes)
case SourceRefManifest => deserializeSourceRef(bytes)
case AckManifest => StreamRefsProtocol.Ack
}
// -----