// 
// Decompiled by Procyon v0.6.0
// 

package io.netty.channel.epoll;

import io.netty.util.internal.logging.InternalLoggerFactory;
import io.netty.channel.IoEventLoopGroup;
import io.netty.channel.IoEventLoop;
import io.netty.channel.IoHandlerFactory;
import io.netty.channel.EventLoopTaskQueueFactory;
import io.netty.util.concurrent.RejectedExecutionHandler;
import io.netty.util.concurrent.EventExecutorChooserFactory;
import io.netty.util.concurrent.RejectedExecutionHandlers;
import io.netty.channel.DefaultSelectStrategyFactory;
import java.util.concurrent.Executor;
import io.netty.channel.SelectStrategyFactory;
import java.util.concurrent.ThreadFactory;
import io.netty.util.internal.logging.InternalLogger;
import io.netty.channel.MultiThreadIoEventLoopGroup;

@Deprecated
public final class EpollEventLoopGroup extends MultiThreadIoEventLoopGroup
{
    private static final InternalLogger LOGGER;
    
    public EpollEventLoopGroup() {
        this(0);
    }
    
    public EpollEventLoopGroup(final int nThreads) {
        this(nThreads, (ThreadFactory)null);
    }
    
    public EpollEventLoopGroup(final ThreadFactory threadFactory) {
        this(0, threadFactory, 0);
    }
    
    public EpollEventLoopGroup(final int nThreads, final SelectStrategyFactory selectStrategyFactory) {
        this(nThreads, (ThreadFactory)null, selectStrategyFactory);
    }
    
    public EpollEventLoopGroup(final int nThreads, final ThreadFactory threadFactory) {
        this(nThreads, threadFactory, 0);
    }
    
    public EpollEventLoopGroup(final int nThreads, final Executor executor) {
        this(nThreads, executor, DefaultSelectStrategyFactory.INSTANCE);
    }
    
    public EpollEventLoopGroup(final int nThreads, final ThreadFactory threadFactory, final SelectStrategyFactory selectStrategyFactory) {
        this(nThreads, threadFactory, 0, selectStrategyFactory);
    }
    
    @Deprecated
    public EpollEventLoopGroup(final int nThreads, final ThreadFactory threadFactory, final int maxEventsAtOnce) {
        this(nThreads, threadFactory, maxEventsAtOnce, DefaultSelectStrategyFactory.INSTANCE);
    }
    
    @Deprecated
    public EpollEventLoopGroup(final int nThreads, final ThreadFactory threadFactory, final int maxEventsAtOnce, final SelectStrategyFactory selectStrategyFactory) {
        super(nThreads, threadFactory, EpollIoHandler.newFactory(maxEventsAtOnce, selectStrategyFactory), new Object[] { RejectedExecutionHandlers.reject() });
        Epoll.ensureAvailability();
    }
    
    public EpollEventLoopGroup(final int nThreads, final Executor executor, final SelectStrategyFactory selectStrategyFactory) {
        super(nThreads, executor, EpollIoHandler.newFactory(0, selectStrategyFactory), new Object[] { RejectedExecutionHandlers.reject() });
        Epoll.ensureAvailability();
    }
    
    public EpollEventLoopGroup(final int nThreads, final Executor executor, final EventExecutorChooserFactory chooserFactory, final SelectStrategyFactory selectStrategyFactory) {
        super(nThreads, executor, EpollIoHandler.newFactory(0, selectStrategyFactory), chooserFactory, new Object[] { RejectedExecutionHandlers.reject() });
        Epoll.ensureAvailability();
    }
    
    public EpollEventLoopGroup(final int nThreads, final Executor executor, final EventExecutorChooserFactory chooserFactory, final SelectStrategyFactory selectStrategyFactory, final RejectedExecutionHandler rejectedExecutionHandler) {
        super(nThreads, executor, EpollIoHandler.newFactory(0, selectStrategyFactory), chooserFactory, new Object[] { rejectedExecutionHandler });
        Epoll.ensureAvailability();
    }
    
    public EpollEventLoopGroup(final int nThreads, final Executor executor, final EventExecutorChooserFactory chooserFactory, final SelectStrategyFactory selectStrategyFactory, final RejectedExecutionHandler rejectedExecutionHandler, final EventLoopTaskQueueFactory queueFactory) {
        super(nThreads, executor, EpollIoHandler.newFactory(0, selectStrategyFactory), chooserFactory, new Object[] { rejectedExecutionHandler, queueFactory });
        Epoll.ensureAvailability();
    }
    
    public EpollEventLoopGroup(final int nThreads, final Executor executor, final EventExecutorChooserFactory chooserFactory, final SelectStrategyFactory selectStrategyFactory, final RejectedExecutionHandler rejectedExecutionHandler, final EventLoopTaskQueueFactory taskQueueFactory, final EventLoopTaskQueueFactory tailTaskQueueFactory) {
        super(nThreads, executor, EpollIoHandler.newFactory(0, selectStrategyFactory), chooserFactory, new Object[] { rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory });
        Epoll.ensureAvailability();
    }
    
    @Deprecated
    public void setIoRatio(final int ioRatio) {
        EpollEventLoopGroup.LOGGER.debug("EpollEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op");
    }
    
    @Override
    protected IoEventLoop newChild(final Executor executor, final IoHandlerFactory ioHandlerFactory, final Object... args) {
        final RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler)args[0];
        EventLoopTaskQueueFactory taskQueueFactory = null;
        EventLoopTaskQueueFactory tailTaskQueueFactory = null;
        final int argsLength = args.length;
        if (argsLength > 1) {
            taskQueueFactory = (EventLoopTaskQueueFactory)args[1];
        }
        if (argsLength > 2) {
            tailTaskQueueFactory = (EventLoopTaskQueueFactory)args[2];
        }
        return new EpollEventLoop(this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler);
    }
    
    static {
        LOGGER = InternalLoggerFactory.getInstance(EpollEventLoopGroup.class);
    }
}
