3131
3232import java .util .concurrent .ThreadFactory ;
3333import java .util .function .BiFunction ;
34+ import java .util .function .Supplier ;
3435
3536public class TransportHelper {
3637 public static final TransportHelper .TransportType TRANSPORT_TYPE = TransportHelper .determineTransportMethod ();
@@ -87,8 +88,8 @@ private static TransportType determineTransportMethod() {
8788 EpollDatagramChannel ::new ,
8889 NEW_NETTY ? (threads , factory ) ->
8990 new MultiThreadIoEventLoopGroup (threads , factory , EpollIoHandler .newFactory ()) : EpollEventLoopGroup ::new ,
90- Epoll .isTcpFastOpenServerSideAvailable (),
91- Epoll .isTcpFastOpenClientSideAvailable ()
91+ getSafely (() -> Epoll .isTcpFastOpenServerSideAvailable () ),
92+ getSafely (() -> Epoll .isTcpFastOpenClientSideAvailable () )
9293 );
9394 }
9495
@@ -106,8 +107,8 @@ private static TransportType determineTransportMethod() {
106107 KQueueDatagramChannel ::new ,
107108 NEW_NETTY ? (threads , factory ) ->
108109 new MultiThreadIoEventLoopGroup (threads , factory , KQueueIoHandler .newFactory ()) : KQueueEventLoopGroup ::new ,
109- KQueue .isTcpFastOpenServerSideAvailable (),
110- KQueue .isTcpFastOpenClientSideAvailable ()
110+ getSafely (() -> KQueue .isTcpFastOpenServerSideAvailable () ),
111+ getSafely (() -> KQueue .isTcpFastOpenClientSideAvailable () )
111112 );
112113 }
113114 }
@@ -138,4 +139,12 @@ private static boolean isClassAvailable(String className) {
138139 return false ;
139140 }
140141 }
142+
143+ private static boolean getSafely (Supplier <Boolean > supplier ) {
144+ try {
145+ return supplier .get ();
146+ } catch (Throwable ignored ) {
147+ return false ;
148+ }
149+ }
141150}
0 commit comments