@@ -6,6 +6,7 @@ import io.grpc.Server
66import io.grpc.netty.GrpcSslContexts
77import io.grpc.netty.NettyChannelBuilder
88import io.grpc.netty.NettyServerBuilder
9+ import io.netty.channel.ChannelOption
910import io.netty.channel.epoll.EpollDomainSocketChannel
1011import io.netty.channel.epoll.EpollEventLoopGroup
1112import io.netty.channel.epoll.EpollServerDomainSocketChannel
@@ -36,24 +37,27 @@ internal class ChannelProvider(private val mTLSConfig: MTLSConfig? = null) {
3637 throw IllegalArgumentException (" Network type '$network ' is not supported." )
3738 }
3839
39- val (builder, shutdownHook) = when (val os = System .getProperty(" os.name" )) {
40+ val builder = NettyChannelBuilder .forAddress(DomainSocketAddress (address))
41+ .withOption(ChannelOption .SO_KEEPALIVE , null )
42+
43+ val shutdownHook = when (val os = System .getProperty(" os.name" )) {
4044 MAC_OS -> {
4145 val kqg = KQueueEventLoopGroup ()
42- val builder =
43- NettyChannelBuilder .forAddress(DomainSocketAddress (address))
44- .eventLoopGroup(kqg)
45- .channelType(KQueueDomainSocketChannel ::class .java)
4646
47- builder to { kqg.shutdownGracefully() }
47+ builder
48+ .eventLoopGroup(kqg)
49+ .channelType(KQueueDomainSocketChannel ::class .java);
50+
51+ { kqg.shutdownGracefully() }
4852 }
4953 LINUX -> {
5054 val elg = EpollEventLoopGroup ()
51- val builder =
52- NettyChannelBuilder .forAddress(DomainSocketAddress (address))
53- .eventLoopGroup(elg)
54- .channelType(EpollDomainSocketChannel ::class .java)
5555
56- builder to { elg.shutdownGracefully() }
56+ builder
57+ .eventLoopGroup(elg)
58+ .channelType(EpollDomainSocketChannel ::class .java);
59+
60+ { elg.shutdownGracefully() }
5761 }
5862 else -> throw IllegalArgumentException (" OS '$os ' is not supported." )
5963 }
@@ -103,18 +107,20 @@ internal class ChannelProvider(private val mTLSConfig: MTLSConfig? = null) {
103107 throw IllegalArgumentException (" Network type '$network ' is not supported." )
104108 }
105109
106- val (builder, shutdownHook) = when (val os = System .getProperty(" os.name" )) {
110+ val builder = NettyServerBuilder .forAddress(DomainSocketAddress (address))
111+ .withChildOption(ChannelOption .SO_KEEPALIVE , null )
112+
113+ val shutdownHook = when (val os = System .getProperty(" os.name" )) {
107114 MAC_OS -> {
108115 val boss = KQueueEventLoopGroup ()
109116 val worker = KQueueEventLoopGroup ()
110117
111- val builder =
112- NettyServerBuilder .forAddress(DomainSocketAddress (address))
113- .bossEventLoopGroup(boss)
114- .workerEventLoopGroup(worker)
115- .channelType(KQueueServerDomainSocketChannel ::class .java)
118+ builder
119+ .bossEventLoopGroup(boss)
120+ .workerEventLoopGroup(worker)
121+ .channelType(KQueueServerDomainSocketChannel ::class .java);
116122
117- builder to {
123+ {
118124 boss.shutdownGracefully()
119125 worker.shutdownGracefully()
120126 }
@@ -123,13 +129,12 @@ internal class ChannelProvider(private val mTLSConfig: MTLSConfig? = null) {
123129 val boss = EpollEventLoopGroup ()
124130 val worker = EpollEventLoopGroup ()
125131
126- val builder =
127- NettyServerBuilder .forAddress(DomainSocketAddress (address))
128- .bossEventLoopGroup(boss)
129- .workerEventLoopGroup(worker)
130- .channelType(EpollServerDomainSocketChannel ::class .java)
132+ builder
133+ .bossEventLoopGroup(boss)
134+ .workerEventLoopGroup(worker)
135+ .channelType(EpollServerDomainSocketChannel ::class .java);
131136
132- builder to {
137+ {
133138 boss.shutdownGracefully()
134139 worker.shutdownGracefully()
135140 }
0 commit comments