Determine the default allocator from system property
- Add ByteBufAllocator.DEFAULT - The default allocator is 'unpooled'
This commit is contained in:
parent
dd4ed6aa14
commit
b18c8fe688
@ -21,6 +21,8 @@ package io.netty.buffer;
|
|||||||
*/
|
*/
|
||||||
public interface ByteBufAllocator {
|
public interface ByteBufAllocator {
|
||||||
|
|
||||||
|
ByteBufAllocator DEFAULT = ByteBufUtil.DEFAULT_ALLOCATOR;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocate a {@link ByteBuf}. If it is a direct or heap buffer
|
* Allocate a {@link ByteBuf}. If it is a direct or heap buffer
|
||||||
* depends on the actual implementation.
|
* depends on the actual implementation.
|
||||||
|
@ -16,6 +16,9 @@
|
|||||||
package io.netty.buffer;
|
package io.netty.buffer;
|
||||||
|
|
||||||
import io.netty.util.CharsetUtil;
|
import io.netty.util.CharsetUtil;
|
||||||
|
import io.netty.util.internal.SystemPropertyUtil;
|
||||||
|
import io.netty.util.internal.logging.InternalLogger;
|
||||||
|
import io.netty.util.internal.logging.InternalLoggerFactory;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.ByteOrder;
|
import java.nio.ByteOrder;
|
||||||
@ -25,20 +28,40 @@ import java.nio.charset.Charset;
|
|||||||
import java.nio.charset.CharsetDecoder;
|
import java.nio.charset.CharsetDecoder;
|
||||||
import java.nio.charset.CharsetEncoder;
|
import java.nio.charset.CharsetEncoder;
|
||||||
import java.nio.charset.CoderResult;
|
import java.nio.charset.CoderResult;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A collection of utility methods that is related with handling {@link ByteBuf}.
|
* A collection of utility methods that is related with handling {@link ByteBuf}.
|
||||||
*/
|
*/
|
||||||
public final class ByteBufUtil {
|
public final class ByteBufUtil {
|
||||||
|
|
||||||
|
private static final InternalLogger logger = InternalLoggerFactory.getInstance(ByteBufUtil.class);
|
||||||
|
|
||||||
private static final char[] HEXDUMP_TABLE = new char[256 * 4];
|
private static final char[] HEXDUMP_TABLE = new char[256 * 4];
|
||||||
|
|
||||||
|
static final ByteBufAllocator DEFAULT_ALLOCATOR;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
final char[] DIGITS = "0123456789abcdef".toCharArray();
|
final char[] DIGITS = "0123456789abcdef".toCharArray();
|
||||||
for (int i = 0; i < 256; i ++) {
|
for (int i = 0; i < 256; i ++) {
|
||||||
HEXDUMP_TABLE[ i << 1 ] = DIGITS[i >>> 4 & 0x0F];
|
HEXDUMP_TABLE[ i << 1 ] = DIGITS[i >>> 4 & 0x0F];
|
||||||
HEXDUMP_TABLE[(i << 1) + 1] = DIGITS[i & 0x0F];
|
HEXDUMP_TABLE[(i << 1) + 1] = DIGITS[i & 0x0F];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String allocType = SystemPropertyUtil.get("io.netty.allocator.type", "pooled").toLowerCase(Locale.US).trim();
|
||||||
|
ByteBufAllocator alloc;
|
||||||
|
if ("unpooled".equals(allocType)) {
|
||||||
|
alloc = UnpooledByteBufAllocator.DEFAULT;
|
||||||
|
logger.debug("-Dio.netty.allocator.type: {}", allocType);
|
||||||
|
} else if ("pooled".equals(allocType)) {
|
||||||
|
alloc = PooledByteBufAllocator.DEFAULT;
|
||||||
|
logger.debug("-Dio.netty.allocator.type: {}", allocType);
|
||||||
|
} else {
|
||||||
|
alloc = UnpooledByteBufAllocator.DEFAULT;
|
||||||
|
logger.debug("-Dio.netty.allocator.type: unpooled (unknown: {})", allocType);
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFAULT_ALLOCATOR = alloc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
package io.netty.channel;
|
package io.netty.channel;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBufAllocator;
|
import io.netty.buffer.ByteBufAllocator;
|
||||||
import io.netty.buffer.UnpooledByteBufAllocator;
|
|
||||||
import io.netty.channel.nio.AbstractNioByteChannel;
|
import io.netty.channel.nio.AbstractNioByteChannel;
|
||||||
import io.netty.channel.socket.SocketChannelConfig;
|
import io.netty.channel.socket.SocketChannelConfig;
|
||||||
|
|
||||||
@ -31,7 +30,6 @@ import static io.netty.channel.ChannelOption.*;
|
|||||||
*/
|
*/
|
||||||
public class DefaultChannelConfig implements ChannelConfig {
|
public class DefaultChannelConfig implements ChannelConfig {
|
||||||
|
|
||||||
private static final ByteBufAllocator DEFAULT_ALLOCATOR = UnpooledByteBufAllocator.DEFAULT;
|
|
||||||
private static final RecvByteBufAllocator DEFAULT_RCVBUF_ALLOCATOR = AdaptiveRecvByteBufAllocator.DEFAULT;
|
private static final RecvByteBufAllocator DEFAULT_RCVBUF_ALLOCATOR = AdaptiveRecvByteBufAllocator.DEFAULT;
|
||||||
private static final MessageSizeEstimator DEFAULT_MSG_SIZE_ESTIMATOR = DefaultMessageSizeEstimator.DEFAULT;
|
private static final MessageSizeEstimator DEFAULT_MSG_SIZE_ESTIMATOR = DefaultMessageSizeEstimator.DEFAULT;
|
||||||
|
|
||||||
@ -39,7 +37,7 @@ public class DefaultChannelConfig implements ChannelConfig {
|
|||||||
|
|
||||||
protected final Channel channel;
|
protected final Channel channel;
|
||||||
|
|
||||||
private volatile ByteBufAllocator allocator = DEFAULT_ALLOCATOR;
|
private volatile ByteBufAllocator allocator = ByteBufAllocator.DEFAULT;
|
||||||
private volatile RecvByteBufAllocator rcvBufAllocator = DEFAULT_RCVBUF_ALLOCATOR;
|
private volatile RecvByteBufAllocator rcvBufAllocator = DEFAULT_RCVBUF_ALLOCATOR;
|
||||||
private volatile MessageSizeEstimator msgSizeEstimator = DEFAULT_MSG_SIZE_ESTIMATOR;
|
private volatile MessageSizeEstimator msgSizeEstimator = DEFAULT_MSG_SIZE_ESTIMATOR;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user