private static NativeTransportImpl loadImpl(String packageName, String classPrefix) {
try {
Class<? extends ServerSocketChannel> serverSocketChannelClass = loadClass(ServerSocketChannel.class, packageName, classPrefix, ServerSocketChannel.class.getSimpleName());
Class<? extends SocketChannel> socketChannelClass = loadClass(SocketChannel.class, packageName, classPrefix, SocketChannel.class.getSimpleName());
Class<? extends EventLoopGroup> eventLoopGroupClass = loadClass(EventLoopGroup.class, packageName, classPrefix, EventLoopGroup.class.getSimpleName());
Constructor<? extends EventLoopGroup> constructor = eventLoopGroupClass.getConstructor(int.class, ThreadFactory.class);
return new NativeTransportImpl(serverSocketChannelClass, socketChannelClass, constructor);
} catch (ReflectiveOperationException e) {
LOGGER.debug("Failed to load {}", classPrefix, e);
return null;
}
}