@Override
public ServerConnector createServerConnector(ServerBootstrapConfiguration serverBootstrapConfiguration,
ListenerConfiguration listenerConfig) {
ServerConnectorBootstrap serverConnectorBootstrap = new ServerConnectorBootstrap(allChannels);
serverConnectorBootstrap.addSocketConfiguration(serverBootstrapConfiguration);
SSLConfig sslConfig = listenerConfig.getListenerSSLConfig();
serverConnectorBootstrap.addSecurity(sslConfig);
if (sslConfig != null) {
setSslContext(serverConnectorBootstrap, sslConfig, listenerConfig);
}
serverConnectorBootstrap.addIdleTimeout(listenerConfig.getSocketIdleTimeout());
if (Constants.HTTP_2_0 == Float.valueOf(listenerConfig.getVersion())) {
serverConnectorBootstrap.setHttp2Enabled(true);
}
serverConnectorBootstrap.addHttpTraceLogHandler(listenerConfig.isHttpTraceLogEnabled());
serverConnectorBootstrap.addHttpAccessLogHandler(listenerConfig.isHttpAccessLogEnabled());
serverConnectorBootstrap.addThreadPools(bossGroup, workerGroup);
serverConnectorBootstrap.addHeaderAndEntitySizeValidation(listenerConfig.getRequestSizeValidationConfig());
serverConnectorBootstrap.addChunkingBehaviour(listenerConfig.getChunkConfig());
serverConnectorBootstrap.addKeepAliveBehaviour(listenerConfig.getKeepAliveConfig());
serverConnectorBootstrap.addServerHeader(listenerConfig.getServerHeader());
serverConnectorBootstrap.setPipeliningEnabled(listenerConfig.isPipeliningEnabled());
serverConnectorBootstrap.setPipeliningLimit(listenerConfig.getPipeliningLimit());
if (listenerConfig.isPipeliningEnabled()) {
pipeliningGroup = new DefaultEventExecutorGroup(PIPELINING_THREAD_COUNT, new DefaultThreadFactory(
PIPELINING_THREAD_POOL_NAME));
serverConnectorBootstrap.setPipeliningThreadGroup(pipeliningGroup);
}
return serverConnectorBootstrap.getServerConnector(listenerConfig.getHost(), listenerConfig.getPort());
}