From e9dfaf7ed8c155f1bf3d6436dbed0badfbc8cfdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Bone=CC=81r?= Date: Fri, 28 Oct 2011 12:00:06 +0200 Subject: [PATCH] Fixed misc FIXMEs --- akka-actor/src/main/scala/akka/actor/Actor.scala | 3 ++- .../main/scala/akka/routing/ConnectionManager.scala | 1 - .../src/main/scala/akka/routing/RoutedProps.scala | 2 -- akka-actor/src/main/scala/akka/routing/Routing.scala | 10 +++++----- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/akka-actor/src/main/scala/akka/actor/Actor.scala b/akka-actor/src/main/scala/akka/actor/Actor.scala index d55c330840..a6cb36443d 100644 --- a/akka-actor/src/main/scala/akka/actor/Actor.scala +++ b/akka-actor/src/main/scala/akka/actor/Actor.scala @@ -119,8 +119,9 @@ case class UnhandledMessageException(msg: Any, ref: ActorRef = null) extends Exc /** * Classes for passing status back to the sender. + * Used for internal ACKing protocol. But exposed as utility class for user-specific ACKing protocols as well. */ -object Status { //FIXME Why does this exist at all? +object Status { sealed trait Status extends Serializable case class Success(status: AnyRef) extends Status case class Failure(cause: Throwable) extends Status diff --git a/akka-actor/src/main/scala/akka/routing/ConnectionManager.scala b/akka-actor/src/main/scala/akka/routing/ConnectionManager.scala index 69ae417f53..80230e73ff 100644 --- a/akka-actor/src/main/scala/akka/routing/ConnectionManager.scala +++ b/akka-actor/src/main/scala/akka/routing/ConnectionManager.scala @@ -14,7 +14,6 @@ import java.net.InetSocketAddress /** * An Iterable that also contains a version. */ -// FIXME REMOVE VersionedIterable trait VersionedIterable[A] { val version: Long diff --git a/akka-actor/src/main/scala/akka/routing/RoutedProps.scala b/akka-actor/src/main/scala/akka/routing/RoutedProps.scala index a1b15dd763..9492824cc6 100644 --- a/akka-actor/src/main/scala/akka/routing/RoutedProps.scala +++ b/akka-actor/src/main/scala/akka/routing/RoutedProps.scala @@ -59,8 +59,6 @@ object RouterType { /** * A RouterType that select the connection based on the least amount of ram used. - * - * FIXME: this is extremely vague currently since there are so many ways to define least amount of ram. */ object LeastRAM extends RouterType diff --git a/akka-actor/src/main/scala/akka/routing/Routing.scala b/akka-actor/src/main/scala/akka/routing/Routing.scala index 77ce3de642..b68c6016ae 100644 --- a/akka-actor/src/main/scala/akka/routing/Routing.scala +++ b/akka-actor/src/main/scala/akka/routing/Routing.scala @@ -142,8 +142,6 @@ private[akka] class RoutedActorRef(val routedProps: RoutedProps, override val ad /** * An Abstract Router implementation that already provides the basic infrastructure so that a concrete * Router only needs to implement the next method. - * - * FIXME: this is also the location where message buffering should be done in case of failure. */ trait BasicRouter extends Router { @@ -258,15 +256,17 @@ class DirectRouter extends BasicRouter { * @author Jonas Bonér */ class RandomRouter extends BasicRouter { + import java.security.SecureRandom private val state = new AtomicReference[RandomRouterState] - //FIXME: threadlocal random? - private val random = new java.util.Random(System.nanoTime) + private val random = new ThreadLocal[SecureRandom] { + override def initialValue = SecureRandom.getInstance("SHA1PRNG") + } def next: Option[ActorRef] = currentState.array match { case a if a.isEmpty ⇒ None - case a ⇒ Some(a(random.nextInt(a.length))) + case a ⇒ Some(a(random.get.nextInt(a.length))) } @tailrec