All Downloads are FREE. Search and download functionalities are using the official Maven repository.

akka.remote.RemoteDeployer.scala Maven / Gradle / Ivy

The newest version!
/**
 * Copyright (C) 2009-2014 Typesafe Inc. 
 */
package akka.remote

import akka.actor._
import akka.routing._
import akka.remote.routing._
import akka.ConfigurationException
import akka.japi.Util.immutableSeq
import com.typesafe.config._
import akka.routing.Pool
import akka.remote.routing.RemoteRouterConfig

@SerialVersionUID(1L)
case class RemoteScope(node: Address) extends Scope {
  def withFallback(other: Scope): Scope = this
}

/**
 * INTERNAL API
 */
private[akka] class RemoteDeployer(_settings: ActorSystem.Settings, _pm: DynamicAccess) extends Deployer(_settings, _pm) {
  override def parseConfig(path: String, config: Config): Option[Deploy] = {
    import scala.collection.JavaConverters._

    super.parseConfig(path, config) match {
      case d @ Some(deploy) ⇒
        deploy.config.getString("remote") match {
          case AddressFromURIString(r) ⇒ Some(deploy.copy(scope = RemoteScope(r)))
          case str if !str.isEmpty     ⇒ throw new ConfigurationException(s"unparseable remote node name [${str}]")
          case _ ⇒
            val nodes = immutableSeq(deploy.config.getStringList("target.nodes")).map(AddressFromURIString(_))
            if (nodes.isEmpty || deploy.routerConfig == NoRouter) d
            else deploy.routerConfig match {
              case r: Pool ⇒ Some(deploy.copy(routerConfig = RemoteRouterConfig(r, nodes)))
              case _       ⇒ d
            }
        }
      case None ⇒ None
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy