This is an automated email from the ASF dual-hosted git repository.

szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ratis.git


The following commit(s) were added to refs/heads/master by this push:
     new 54ae6e97 RATIS-1615. Server should support listening on a specified 
network address (#672)
54ae6e97 is described below

commit 54ae6e97757a3a07a324f2541e97e7d1c35144a6
Author: lanicc <[email protected]>
AuthorDate: Fri Jul 8 12:27:40 2022 +0800

    RATIS-1615. Server should support listening on a specified network address 
(#672)
---
 .../org/apache/ratis/netty/NettyConfigKeys.java    | 22 ++++++++++++++++++++++
 .../apache/ratis/netty/server/NettyRpcService.java |  5 ++++-
 .../ratis/netty/server/NettyServerStreamRpc.java   |  5 ++++-
 3 files changed, 30 insertions(+), 2 deletions(-)

diff --git 
a/ratis-netty/src/main/java/org/apache/ratis/netty/NettyConfigKeys.java 
b/ratis-netty/src/main/java/org/apache/ratis/netty/NettyConfigKeys.java
index fcd7eacb..07e66216 100644
--- a/ratis-netty/src/main/java/org/apache/ratis/netty/NettyConfigKeys.java
+++ b/ratis-netty/src/main/java/org/apache/ratis/netty/NettyConfigKeys.java
@@ -41,9 +41,20 @@ public interface NettyConfigKeys {
 
     String PREFIX = NettyConfigKeys.PREFIX + ".server";
 
+    String HOST_KEY = PREFIX + ".host";
+    String HOST_DEFAULT = null;
+
     String PORT_KEY = PREFIX + ".port";
     int PORT_DEFAULT = 0;
 
+    static String host(RaftProperties properties) {
+      return get(properties::get, HOST_KEY, HOST_DEFAULT, getDefaultLog());
+    }
+
+    static void setHost(RaftProperties properties, String host) {
+      set(properties::set, HOST_KEY, host);
+    }
+
     static int port(RaftProperties properties) {
       return getInt(properties::getInt,
           PORT_KEY, PORT_DEFAULT, getDefaultLog(), requireMin(0), 
requireMax(65536));
@@ -62,9 +73,20 @@ public interface NettyConfigKeys {
 
     String PREFIX = NettyConfigKeys.PREFIX + ".dataStream";
 
+    String HOST_KEY = PREFIX + ".host";
+    String HOST_DEFAULT = null;
+
     String PORT_KEY = PREFIX + ".port";
     int PORT_DEFAULT = 0;
 
+    static String host(RaftProperties properties) {
+      return get(properties::get, HOST_KEY, HOST_DEFAULT, getDefaultLog());
+    }
+
+    static void setHost(RaftProperties properties, String host) {
+      set(properties::set, HOST_KEY, host);
+    }
+
     static int port(RaftProperties properties) {
       return getInt(properties::getInt,
           PORT_KEY, PORT_DEFAULT, getDefaultLog(), requireMin(0), 
requireMax(65536));
diff --git 
a/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyRpcService.java 
b/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyRpcService.java
index 1f546873..23fd98f3 100644
--- 
a/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyRpcService.java
+++ 
b/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyRpcService.java
@@ -116,13 +116,16 @@ public final class NettyRpcService extends 
RaftServerRpcWithProxy<NettyRpcProxy,
       }
     };
 
+    final String host = NettyConfigKeys.Server.host(server.getProperties());
     final int port = NettyConfigKeys.Server.port(server.getProperties());
+    InetSocketAddress socketAddress =
+            host == null || host.isEmpty() ? new InetSocketAddress(port) : new 
InetSocketAddress(host, port);
     this.channel = JavaUtils.memoize(() -> new ServerBootstrap()
         .group(bossGroup, workerGroup)
         .channel(NioServerSocketChannel.class)
         .handler(new LoggingHandler(LogLevel.INFO))
         .childHandler(initializer)
-        .bind(port));
+        .bind(socketAddress));
   }
 
   @Override
diff --git 
a/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyServerStreamRpc.java
 
b/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyServerStreamRpc.java
index dd79d839..311c4c5c 100644
--- 
a/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyServerStreamRpc.java
+++ 
b/ratis-netty/src/main/java/org/apache/ratis/netty/server/NettyServerStreamRpc.java
@@ -170,7 +170,10 @@ public class NettyServerStreamRpc implements 
DataStreamServerRpc {
         NettyConfigKeys.DataStream.Server.workerGroupSize(properties), 
useEpoll);
 
     final SslContext sslContext = NettyUtils.buildSslContextForServer(tlsConf);
+    final String host = 
NettyConfigKeys.DataStream.host(server.getProperties());
     final int port = NettyConfigKeys.DataStream.port(properties);
+    InetSocketAddress socketAddress =
+            host == null || host.isEmpty() ? new InetSocketAddress(port) : new 
InetSocketAddress(host, port);
     this.channelFuture = new ServerBootstrap()
         .group(bossGroup, workerGroup)
         .channel(bossGroup instanceof EpollEventLoopGroup ?
@@ -179,7 +182,7 @@ public class NettyServerStreamRpc implements 
DataStreamServerRpc {
         .childHandler(newChannelInitializer(sslContext))
         .childOption(ChannelOption.SO_KEEPALIVE, true)
         .childOption(ChannelOption.TCP_NODELAY, true)
-        .bind(port);
+        .bind(socketAddress);
   }
 
   static DataStreamClient newClient(RaftPeer peer, RaftProperties properties) {

Reply via email to