|
Akka/Scala example source code file (Extension.scala)
The Extension.scala Akka example source code
/**
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
*/
package akka.remote.testconductor
import akka.actor.{ Extension, ExtensionId, ExtensionIdProvider, ExtendedActorSystem, ActorContext, ActorRef, Address, ActorSystem, Props }
import akka.remote.RemoteActorRefProvider
import akka.util.Timeout
import java.util.concurrent.TimeUnit.MILLISECONDS
import java.util.concurrent.ConcurrentHashMap
import scala.concurrent.duration.Duration
import com.typesafe.config.Config
import akka.dispatch.ThreadPoolConfig
/**
* Access to the [[akka.remote.testconductor.TestConductorExt]] extension:
*
* {{{
* val tc = TestConductor(system)
* tc.startController(numPlayers)
* // OR
* tc.startClient(conductorPort)
* }}}
*/
object TestConductor extends ExtensionId[TestConductorExt] with ExtensionIdProvider {
override def lookup = TestConductor
override def createExtension(system: ExtendedActorSystem): TestConductorExt = new TestConductorExt(system)
/**
* Java API: retrieve the TestConductor extension for the given system.
*/
override def get(system: ActorSystem): TestConductorExt = super.get(system)
def apply()(implicit ctx: ActorContext): TestConductorExt = apply(ctx.system)
}
/**
* This binds together the [[akka.remote.testconductor.Conductor]] and
* [[akka.remote.testconductor.Player]] roles inside an Akka
* [[akka.actor.Extension]]. Please follow the aforementioned links for
* more information.
*
* ====Note====
* This extension requires the `akka.actor.provider`
* to be a [[akka.remote.RemoteActorRefProvider]].
*
* To use ``blackhole``, ``passThrough``, and ``throttle`` you must activate the
* failure injector and throttler transport adapters by specifying `testTransport(on = true)`
* in your MultiNodeConfig.
*
*/
class TestConductorExt(val system: ExtendedActorSystem) extends Extension with Conductor with Player {
object Settings {
val config = system.settings.config.getConfig("akka.testconductor")
import akka.util.Helpers.ConfigOps
val ConnectTimeout = config.getMillisDuration("connect-timeout")
val ClientReconnects = config.getInt("client-reconnects")
val ReconnectBackoff = config.getMillisDuration("reconnect-backoff")
implicit val BarrierTimeout = Timeout(config.getMillisDuration("barrier-timeout"))
implicit val QueryTimeout = Timeout(config.getMillisDuration("query-timeout"))
val PacketSplitThreshold = config.getMillisDuration("packet-split-threshold")
private def computeWPS(config: Config): Int =
ThreadPoolConfig.scaledPoolSize(
config.getInt("pool-size-min"),
config.getDouble("pool-size-factor"),
config.getInt("pool-size-max"))
val ServerSocketWorkerPoolSize = computeWPS(config.getConfig("netty.server-socket-worker-pool"))
val ClientSocketWorkerPoolSize = computeWPS(config.getConfig("netty.client-socket-worker-pool"))
}
/**
* Remote transport used by the actor ref provider.
*/
val transport = system.provider.asInstanceOf[RemoteActorRefProvider].transport
/**
* Transport address of this Netty-like remote transport.
*/
val address = transport.defaultAddress
}
Other Akka source code examplesHere is a short list of links related to this Akka Extension.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.