Merge pull request #333 from jboner/wip-1841-selectable-local-nic-√

Adding support for specifying localAddress in remote config
This commit is contained in:
viktorklang 2012-02-18 12:44:41 -08:00
commit a0a13adf28
4 changed files with 11 additions and 1 deletions

View file

@ -100,6 +100,10 @@ akka {
# Default is 2552 (AKKA), use 0 if you want a random available port # Default is 2552 (AKKA), use 0 if you want a random available port
port = 2552 port = 2552
# (O) The address of a local network interface (IP Address) to bind to when creating
# outbound connections. Set to "" or "auto" for automatic selection of local address.
outbound-local-address = "auto"
# (I&O) Increase this if you want to be able to send messages with large payloads # (I&O) Increase this if you want to be able to send messages with large payloads
message-frame-size = 1 MiB message-frame-size = 1 MiB

View file

@ -157,12 +157,12 @@ class ActiveRemoteClient private[akka] (
openChannels = new DefaultDisposableChannelGroup(classOf[RemoteClient].getName) openChannels = new DefaultDisposableChannelGroup(classOf[RemoteClient].getName)
executionHandler = new ExecutionHandler(netty.executor) executionHandler = new ExecutionHandler(netty.executor)
val b = new ClientBootstrap(netty.clientChannelFactory) val b = new ClientBootstrap(netty.clientChannelFactory)
b.setPipelineFactory(new ActiveRemoteClientPipelineFactory(name, b, executionHandler, remoteAddress, localAddress, this)) b.setPipelineFactory(new ActiveRemoteClientPipelineFactory(name, b, executionHandler, remoteAddress, localAddress, this))
b.setOption("tcpNoDelay", true) b.setOption("tcpNoDelay", true)
b.setOption("keepAlive", true) b.setOption("keepAlive", true)
b.setOption("connectTimeoutMillis", settings.ConnectionTimeout.toMillis) b.setOption("connectTimeoutMillis", settings.ConnectionTimeout.toMillis)
settings.OutboundLocalAddress.foreach(s b.setOption("localAddress", new InetSocketAddress(s, 0)))
bootstrap = b bootstrap = b
val remoteIP = InetAddress.getByName(remoteAddress.host.get) val remoteIP = InetAddress.getByName(remoteAddress.host.get)

View file

@ -40,6 +40,11 @@ class NettySettings(config: Config, val systemName: String) {
case value value case value value
} }
val OutboundLocalAddress: Option[String] = getString("outbound-local-address") match {
case "auto" | "" | null None
case some Some(some)
}
@deprecated("WARNING: This should only be used by professionals.", "2.0") @deprecated("WARNING: This should only be used by professionals.", "2.0")
val PortSelector = getInt("port") val PortSelector = getInt("port")

View file

@ -43,6 +43,7 @@ class RemoteConfigSpec extends AkkaSpec(
UsePassiveConnections must be(true) UsePassiveConnections must be(true)
Hostname must not be "" // will be set to the local IP Hostname must not be "" // will be set to the local IP
PortSelector must be(0) PortSelector must be(0)
OutboundLocalAddress must be(None)
MessageFrameSize must be(1048576) MessageFrameSize must be(1048576)
ConnectionTimeout must be(2 minutes) ConnectionTimeout must be(2 minutes)
Backlog must be(4096) Backlog must be(4096)