Merge branch 'master' of git@github.com:jboner/akka

This commit is contained in:
Jonas Bonér 2010-11-02 21:18:43 +01:00
commit 2a9af35b4d
2 changed files with 23 additions and 24 deletions

View file

@ -972,12 +972,11 @@ class LocalActorRef private[akka] (
if (future.isDefined) future.get
else throw new IllegalActorStateException("Expected a future from remote call to actor " + toString)
} else {
val future = if (senderFuture.isDefined) senderFuture.get
else new DefaultCompletableFuture[T](timeout)
val future = if (senderFuture.isDefined) senderFuture else Some(new DefaultCompletableFuture[T](timeout))
val invocation = new MessageInvocation(
this, message, senderOption, Some(future.asInstanceOf[CompletableFuture[Any]]), transactionSet.get)
this, message, senderOption, future.asInstanceOf[Some[CompletableFuture[Any]]], transactionSet.get)
dispatcher dispatchMessage invocation
future
future.get
}
}
@ -1114,10 +1113,10 @@ class LocalActorRef private[akka] (
true //Done
}
if (!success)
attemptRestart
if (success)
() //Alles gut
else
() //Yay!
attemptRestart
}
attemptRestart() //Tailrecursion
@ -1147,12 +1146,9 @@ class LocalActorRef private[akka] (
// ========= PRIVATE FUNCTIONS =========
private[this] def newActor: Actor = {
Actor.actorRefInCreation.withValue(Some(this)) {
val actor = actorFactory()
if (actor eq null) throw new ActorInitializationException(
"Actor instance passed to ActorRef can not be 'null'")
actor
}
val a = Actor.actorRefInCreation.withValue(Some(this)) { actorFactory() }
if (a eq null) throw new ActorInitializationException("Actor instance passed to ActorRef can not be 'null'")
a
}
private def joinTransaction(message: Any) = if (isTransactionSetInScope) {
@ -1590,7 +1586,7 @@ trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
if (isRunning) {
if (sender.get.senderFuture.isDefined) postMessageToMailboxAndCreateFutureResultWithTimeout(
message, timeout, sender.get.sender, sender.get.senderFuture)
else if (sender.get.sender.isDefined) postMessageToMailbox(message, Some(sender.get.sender.get))
else if (sender.get.sender.isDefined) postMessageToMailbox(message, sender.get.sender)
else throw new IllegalActorStateException("Can't forward message when initial sender is not an actor")
} else throw new ActorInitializationException("Actor has not been started, you need to invoke 'actor.start' before using it")
}
@ -1619,7 +1615,8 @@ trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
senderFuture.get completeWithResult message
true
} else if (sender.isDefined) {
sender.get ! message
//TODO: optimize away this allocation, perhaps by having implicit self: Option[ActorRef] in signature
sender.get.!(message)(Some(this))
true
} else false
}
@ -1634,9 +1631,10 @@ trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
def !(msg: Any) = future completeWithResult msg
}
} else if (sender.isDefined) {
val someSelf = Some(this)
new Channel[Any] {
val client = sender.get
def !(msg: Any) = client ! msg
def !(msg: Any) = client.!(msg)(someSelf)
}
} else throw new IllegalActorStateException("No channel available")
}

View file

@ -21,9 +21,10 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
"-Xmigration",
"-Xcheckinit",
"-Xstrict-warnings",
// "-optimise", //Uncomment this for release compile
"-Xwarninit",
"-encoding", "utf8")
.map(x => CompileOption(x))
.map(CompileOption(_))
override def javaCompileOptions = JavaCompileOption("-Xlint:unchecked") :: super.javaCompileOptions.toList
// -------------------------------------------------------------------------------------------------------------------
@ -248,6 +249,8 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
lazy val hbase_core = "org.apache.hbase" % "hbase-core" % "0.20.6" % "compile"
lazy val google_coll = "com.google.collections" % "google-collections" % "1.0" % "compile"
//Riak PB Client
lazy val riak_pb_client = "com.trifork" % "riak-java-pb-client" % "1.0-for-akka-by-ticktock" % "compile"
@ -256,8 +259,6 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
lazy val camel_spring = "org.apache.camel" % "camel-spring" % CAMEL_VERSION % "test"
lazy val cassandra_clhm = "org.apache.cassandra" % "clhm-production" % CASSANDRA_VERSION % "test"
lazy val commons_coll = "commons-collections" % "commons-collections" % "3.2.1" % "test"
lazy val google_coll = "com.google.collections" % "google-collections" % "1.0" % "test"
lazy val google_coll_compile = "com.google.collections" % "google-collections" % "1.0" % "compile"
lazy val high_scale = "org.apache.cassandra" % "high-scale-lib" % CASSANDRA_VERSION % "test"
lazy val testJetty = "org.eclipse.jetty" % "jetty-server" % JETTY_VERSION % "test"
@ -275,10 +276,10 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
lazy val jetty_mortbay = "org.mortbay.jetty" % "jetty" % "6.1.14" % "test"
//voldemort testing
lazy val jdom = "org.jdom" % "jdom" % "1.1" % "test"
lazy val vold_jetty = "org.mortbay.jetty" % "jetty" % "6.1.18" % "test"
lazy val velocity = "org.apache.velocity" % "velocity" % "1.6.2" % "test"
lazy val dbcp = "commons-dbcp" % "commons-dbcp" % "1.2.2" % "test"
lazy val jdom = "org.jdom" % "jdom" % "1.1" % "test"
lazy val vold_jetty = "org.mortbay.jetty" % "jetty" % "6.1.18" % "test"
lazy val velocity = "org.apache.velocity" % "velocity" % "1.6.2" % "test"
lazy val dbcp = "commons-dbcp" % "commons-dbcp" % "1.2.2" % "test"
}
// -------------------------------------------------------------------------------------------------------------------
@ -630,7 +631,7 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
//testing
val scalatest = Dependencies.scalatest
val google_coll_compile = Dependencies.google_coll_compile
val google_coll = Dependencies.google_coll
val jdom = Dependencies.jdom
val jetty = Dependencies.vold_jetty
val velocity = Dependencies.velocity