From d5351cdc6ef3e3d55398236ee4046a4e3e973276 Mon Sep 17 00:00:00 2001 From: Vachagan Balayan Date: Wed, 3 Aug 2016 17:48:55 +0800 Subject: [PATCH] adding option for custom executor --- .../socketio/Configuration.java | 12 ++++++ .../socketio/SocketIOServer.java | 38 +++++++++---------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/corundumstudio/socketio/Configuration.java b/src/main/java/com/corundumstudio/socketio/Configuration.java index e996cb751..76f94c01a 100644 --- a/src/main/java/com/corundumstudio/socketio/Configuration.java +++ b/src/main/java/com/corundumstudio/socketio/Configuration.java @@ -18,6 +18,7 @@ import java.io.InputStream; import java.util.Arrays; import java.util.List; +import java.util.concurrent.Executor; import com.corundumstudio.socketio.handler.SuccessAuthorizationListener; import com.corundumstudio.socketio.listener.DefaultExceptionListener; @@ -82,6 +83,8 @@ public class Configuration { private boolean websocketCompression = true; + private Executor executor = null; + public Configuration() { } @@ -146,6 +149,8 @@ public Configuration() { setHttpCompression(conf.isHttpCompression()); setWebsocketCompression(conf.isWebsocketCompression()); + + setExecutor(conf.getExecutor()); } public JsonSupport getJsonSupport() { @@ -561,4 +566,11 @@ public boolean isWebsocketCompression() { return websocketCompression; } + public Executor getExecutor() { + return executor; + } + + public void setExecutor(Executor executor) { + this.executor = executor; + } } diff --git a/src/main/java/com/corundumstudio/socketio/SocketIOServer.java b/src/main/java/com/corundumstudio/socketio/SocketIOServer.java index 09cc7b0f7..88de5aca4 100644 --- a/src/main/java/com/corundumstudio/socketio/SocketIOServer.java +++ b/src/main/java/com/corundumstudio/socketio/SocketIOServer.java @@ -15,6 +15,21 @@ */ package com.corundumstudio.socketio; +import com.corundumstudio.socketio.listener.ClientListeners; +import com.corundumstudio.socketio.listener.ConnectListener; +import com.corundumstudio.socketio.listener.DataListener; +import com.corundumstudio.socketio.listener.DisconnectListener; +import com.corundumstudio.socketio.listener.MultiTypeEventListener; +import com.corundumstudio.socketio.namespace.Namespace; +import com.corundumstudio.socketio.namespace.NamespacesHub; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.InetSocketAddress; +import java.util.Collection; +import java.util.UUID; + import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; @@ -27,21 +42,6 @@ import io.netty.util.concurrent.Future; import io.netty.util.concurrent.FutureListener; -import java.net.InetSocketAddress; -import java.util.Collection; -import java.util.UUID; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.corundumstudio.socketio.listener.ClientListeners; -import com.corundumstudio.socketio.listener.ConnectListener; -import com.corundumstudio.socketio.listener.DataListener; -import com.corundumstudio.socketio.listener.DisconnectListener; -import com.corundumstudio.socketio.listener.MultiTypeEventListener; -import com.corundumstudio.socketio.namespace.Namespace; -import com.corundumstudio.socketio.namespace.NamespacesHub; - /** * Fully thread-safe. * @@ -179,11 +179,11 @@ protected void applyConnectionOptions(ServerBootstrap bootstrap) { protected void initGroups() { if (configCopy.isUseLinuxNativeEpoll()) { - bossGroup = new EpollEventLoopGroup(configCopy.getBossThreads()); - workerGroup = new EpollEventLoopGroup(configCopy.getWorkerThreads()); + bossGroup = new EpollEventLoopGroup(configCopy.getBossThreads(), configCopy.getExecutor()); + workerGroup = new EpollEventLoopGroup(configCopy.getWorkerThreads(), configCopy.getExecutor()); } else { - bossGroup = new NioEventLoopGroup(configCopy.getBossThreads()); - workerGroup = new NioEventLoopGroup(configCopy.getWorkerThreads()); + bossGroup = new NioEventLoopGroup(configCopy.getBossThreads(), configCopy.getExecutor()); + workerGroup = new NioEventLoopGroup(configCopy.getWorkerThreads(), configCopy.getExecutor()); } }