EventLoopGroupHolder.java
net.minecraft.server.network.EventLoopGroupHolder
信息
- 全限定名:net.minecraft.server.network.EventLoopGroupHolder
- 类型:public abstract class
- 包:net.minecraft.server.network
- 源码路径:src/main/java/net/minecraft/server/network/EventLoopGroupHolder.java
- 起始行号:L26
- 职责:
TODO
字段/常量
-
type- 类型:
String - 修饰符:
private final - 源码定位:
L51 - 说明:
TODO
- 类型:
-
channelCls- 类型:
Class<?extends Channel> - 修饰符:
private final - 源码定位:
L52 - 说明:
TODO
- 类型:
-
serverChannelCls- 类型:
Class<?extends ServerChannel> - 修饰符:
private final - 源码定位:
L53 - 说明:
TODO
- 类型:
-
group- 类型:
EventLoopGroup - 修饰符:
private volatile - 源码定位:
L54 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
private EventLoopGroupHolder(String type, Class<?extends Channel> channelCls, Class<?extends ServerChannel> serverChannelCls) @ L74
- 构造器名:EventLoopGroupHolder
- 源码定位:L74
- 修饰符:private
参数:
- type: String
- channelCls: Class<?extends Channel>
- serverChannelCls: Class<?extends ServerChannel>
说明:
TODO
方法
下面的方法块按源码顺序生成。
public static EventLoopGroupHolder remote(boolean allowNativeTransport) @ L56
- 方法名:remote
- 源码定位:L56
- 返回类型:EventLoopGroupHolder
- 修饰符:public static
参数:
- allowNativeTransport: boolean
说明:
TODO
public static EventLoopGroupHolder local() @ L70
- 方法名:local
- 源码定位:L70
- 返回类型:EventLoopGroupHolder
- 修饰符:public static
参数:
- 无
说明:
TODO
private ThreadFactory createThreadFactory() @ L80
- 方法名:createThreadFactory
- 源码定位:L80
- 返回类型:ThreadFactory
- 修饰符:private
参数:
- 无
说明:
TODO
protected abstract IoHandlerFactory ioHandlerFactory() @ L84
- 方法名:ioHandlerFactory
- 源码定位:L84
- 返回类型:IoHandlerFactory
- 修饰符:protected abstract
参数:
- 无
说明:
TODO
private EventLoopGroup createEventLoopGroup() @ L86
- 方法名:createEventLoopGroup
- 源码定位:L86
- 返回类型:EventLoopGroup
- 修饰符:private
参数:
- 无
说明:
TODO
public EventLoopGroup eventLoopGroup() @ L90
- 方法名:eventLoopGroup
- 源码定位:L90
- 返回类型:EventLoopGroup
- 修饰符:public
参数:
- 无
说明:
TODO
public Class<?extends Channel> channelCls() @ L105
- 方法名:channelCls
- 源码定位:L105
- 返回类型:Class<?extends Channel>
- 修饰符:public
参数:
- 无
说明:
TODO
public Class<?extends ServerChannel> serverChannelCls() @ L109
- 方法名:serverChannelCls
- 源码定位:L109
- 返回类型:Class<?extends ServerChannel>
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public abstract class EventLoopGroupHolder {
private static final EventLoopGroupHolder NIO = new EventLoopGroupHolder("NIO", NioSocketChannel.class, NioServerSocketChannel.class) {
@Override
protected IoHandlerFactory ioHandlerFactory() {
return NioIoHandler.newFactory();
}
};
private static final EventLoopGroupHolder EPOLL = new EventLoopGroupHolder("Epoll", EpollSocketChannel.class, EpollServerSocketChannel.class) {
@Override
protected IoHandlerFactory ioHandlerFactory() {
return EpollIoHandler.newFactory();
}
};
private static final EventLoopGroupHolder KQUEUE = new EventLoopGroupHolder("Kqueue", KQueueSocketChannel.class, KQueueServerSocketChannel.class) {
@Override
protected IoHandlerFactory ioHandlerFactory() {
return KQueueIoHandler.newFactory();
}
};
private static final EventLoopGroupHolder LOCAL = new EventLoopGroupHolder("Local", LocalChannel.class, LocalServerChannel.class) {
@Override
protected IoHandlerFactory ioHandlerFactory() {
return LocalIoHandler.newFactory();
}
};
private final String type;
private final Class<? extends Channel> channelCls;
private final Class<? extends ServerChannel> serverChannelCls;
private volatile @Nullable EventLoopGroup group;
public static EventLoopGroupHolder remote(boolean allowNativeTransport) {
if (allowNativeTransport) {
if (KQueue.isAvailable()) {
return KQUEUE;
}
if (Epoll.isAvailable()) {
return EPOLL;
}
}
return NIO;
}
public static EventLoopGroupHolder local() {
return LOCAL;
}
private EventLoopGroupHolder(String type, Class<? extends Channel> channelCls, Class<? extends ServerChannel> serverChannelCls) {
this.type = type;
this.channelCls = channelCls;
this.serverChannelCls = serverChannelCls;
}
private ThreadFactory createThreadFactory() {
return new ThreadFactoryBuilder().setNameFormat("Netty " + this.type + " IO #%d").setDaemon(true).build();
}
protected abstract IoHandlerFactory ioHandlerFactory();
private EventLoopGroup createEventLoopGroup() {
return new MultiThreadIoEventLoopGroup(this.createThreadFactory(), this.ioHandlerFactory());
}
public EventLoopGroup eventLoopGroup() {
EventLoopGroup result = this.group;
if (result == null) {
synchronized (this) {
result = this.group;
if (result == null) {
result = this.createEventLoopGroup();
this.group = result;
}
}
}
return result;
}
public Class<? extends Channel> channelCls() {
return this.channelCls;
}
public Class<? extends ServerChannel> serverChannelCls() {
return this.serverChannelCls;
}
}引用的其他类
- Channel
- 引用位置:
参数/字段/返回值
- 引用位置: