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
    • 引用位置: 参数/字段/返回值