[WIP] Large message stream for Artery (#20545)

* First stab at separate large message channel for Artery

* Full actor paths, no implicit "/user/" part

* Various small fixes after review

* Fixes to make it work after rebasing

* Use a separate EnvelopeBufferPool for the large message stream

* Docs for actorSelection not sending through large message stream
This commit is contained in:
Johan Andrén 2016-05-20 12:40:56 +02:00 committed by Patrik Nordwall
parent a4b996546e
commit cd71643a91
6 changed files with 266 additions and 14 deletions

View file

@ -438,6 +438,13 @@ private[akka] trait RemoteRef extends ActorRefScope {
final def isLocal = false
}
/**
* INTERNAL API
*/
private[remote] sealed abstract class LargeMessageDestinationFlag
private[remote] case object RegularDestination extends LargeMessageDestinationFlag
private[remote] case object LargeDestination extends LargeMessageDestinationFlag
/**
* INTERNAL API
* Remote ActorRef that is used when referencing the Actor on a different node than its "home" node.
@ -454,6 +461,9 @@ private[akka] class RemoteActorRef private[akka] (
@volatile var cachedAssociation: artery.Association = null
// used by artery to direct messages to a separate stream for large messages
@volatile var cachedLargeMessageDestinationFlag: LargeMessageDestinationFlag = null
def getChild(name: Iterator[String]): InternalActorRef = {
val s = name.toStream
s.headOption match {