in core/src/main/java/org/apache/seata/core/rpc/netty/NettyBaseConfig.java [114:175]
static {
TRANSPORT_PROTOCOL_TYPE = TransportProtocolType.getType(CONFIG.getConfig(ConfigurationKeys.TRANSPORT_TYPE, TransportProtocolType.TCP.name()));
String workerThreadSize = CONFIG.getConfig(ConfigurationKeys.WORKER_THREAD_SIZE);
if (StringUtils.isNotBlank(workerThreadSize) && StringUtils.isNumeric(workerThreadSize)) {
WORKER_THREAD_SIZE = Integer.parseInt(workerThreadSize);
} else if (WorkThreadMode.getModeByName(workerThreadSize) != null) {
WORKER_THREAD_SIZE = WorkThreadMode.getModeByName(workerThreadSize).getValue();
} else {
WORKER_THREAD_SIZE = WorkThreadMode.Default.getValue();
}
TRANSPORT_SERVER_TYPE = TransportServerType.getType(CONFIG.getConfig(ConfigurationKeys.TRANSPORT_SERVER, TransportServerType.NIO.name()));
switch (TRANSPORT_SERVER_TYPE) {
case NIO:
if (TRANSPORT_PROTOCOL_TYPE == TransportProtocolType.TCP) {
SERVER_CHANNEL_CLAZZ = NioServerSocketChannel.class;
CLIENT_CHANNEL_CLAZZ = NioSocketChannel.class;
} else {
raiseUnsupportedTransportError();
SERVER_CHANNEL_CLAZZ = null;
CLIENT_CHANNEL_CLAZZ = null;
}
break;
case NATIVE:
if (PlatformDependent.isWindows()) {
throw new IllegalArgumentException("no native supporting for Windows.");
} else if (PlatformDependent.isOsx()) {
if (TRANSPORT_PROTOCOL_TYPE == TransportProtocolType.TCP) {
SERVER_CHANNEL_CLAZZ = KQueueServerSocketChannel.class;
CLIENT_CHANNEL_CLAZZ = KQueueSocketChannel.class;
} else if (TRANSPORT_PROTOCOL_TYPE == TransportProtocolType.UNIX_DOMAIN_SOCKET) {
SERVER_CHANNEL_CLAZZ = KQueueServerDomainSocketChannel.class;
CLIENT_CHANNEL_CLAZZ = KQueueDomainSocketChannel.class;
} else {
raiseUnsupportedTransportError();
SERVER_CHANNEL_CLAZZ = null;
CLIENT_CHANNEL_CLAZZ = null;
}
} else {
if (TRANSPORT_PROTOCOL_TYPE == TransportProtocolType.TCP) {
SERVER_CHANNEL_CLAZZ = EpollServerSocketChannel.class;
CLIENT_CHANNEL_CLAZZ = EpollSocketChannel.class;
} else if (TRANSPORT_PROTOCOL_TYPE == TransportProtocolType.UNIX_DOMAIN_SOCKET) {
SERVER_CHANNEL_CLAZZ = EpollServerDomainSocketChannel.class;
CLIENT_CHANNEL_CLAZZ = EpollDomainSocketChannel.class;
} else {
raiseUnsupportedTransportError();
SERVER_CHANNEL_CLAZZ = null;
CLIENT_CHANNEL_CLAZZ = null;
}
}
break;
default:
throw new IllegalArgumentException("unsupported.");
}
boolean enableHeartbeat = CONFIG.getBoolean(ConfigurationKeys.TRANSPORT_HEARTBEAT, DEFAULT_TRANSPORT_HEARTBEAT);
if (enableHeartbeat) {
MAX_WRITE_IDLE_SECONDS = DEFAULT_WRITE_IDLE_SECONDS;
} else {
MAX_WRITE_IDLE_SECONDS = 0;
}
MAX_READ_IDLE_SECONDS = MAX_WRITE_IDLE_SECONDS * READIDLE_BASE_WRITEIDLE;
}