package org.caudexorigo.netty;
import io.netty.buffer.ByteBufAllocator;
import io.netty.buffer.UnpooledByteBufAllocator;
import io.netty.channel.Channel;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.ServerChannel;
import io.netty.channel.epoll.Epoll;
import io.netty.channel.epoll.EpollDatagramChannel;
import io.netty.channel.epoll.EpollEventLoopGroup;
import io.netty.channel.epoll.EpollServerSocketChannel;
import io.netty.channel.epoll.EpollSocketChannel;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.DatagramChannel;
import io.netty.channel.socket.nio.NioDatagramChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
public class VoidNettyContext implements NettyContext
{
private final Class<? extends ServerChannel> _serverChannelClass;
private final Class<? extends Channel> _channelClass;
private final Class<? extends DatagramChannel> _datagramChannelClass;
public VoidNettyContext()
{
super();
if (Epoll.isAvailable())
{
_serverChannelClass = EpollServerSocketChannel.class;
_channelClass = EpollSocketChannel.class;
_datagramChannelClass = EpollDatagramChannel.class;
}
else
{
_serverChannelClass = NioServerSocketChannel.class;
_channelClass = NioSocketChannel.class;
_datagramChannelClass = NioDatagramChannel.class;
}
}
@Override
public ByteBufAllocator getAllocator()
{
return UnpooledByteBufAllocator.DEFAULT;
}
@Override
public Class<? extends ServerChannel> getServerChannelClass()
{
return _serverChannelClass;
}
@Override
public Class<? extends Channel> getChannelClass()
{
return _channelClass;
}
@Override
public Class<? extends DatagramChannel> getDatagramChannelClass()
{
return _datagramChannelClass;
}
@Override
public EventLoopGroup getBossEventLoopGroup()
{
return null;
}
@Override
public EventLoopGroup getWorkerEventLoopGroup()
{
return null;
}
}