diff options
author | Joakim Erdfelt | 2012-07-25 16:16:10 +0000 |
---|---|---|
committer | Joakim Erdfelt | 2012-07-25 16:16:10 +0000 |
commit | e46cc961ac198dca38e3a277e43202a3b60fbccd (patch) | |
tree | 3cfd60dc043fe6e435e7768a35a9a6438db14d89 /jetty-websocket | |
parent | a49238ceba125c890ba22345af24978d9655b923 (diff) | |
parent | 822abe514e55c7795cc4721d86c4d8d059e9b218 (diff) | |
download | org.eclipse.jetty.project-e46cc961ac198dca38e3a277e43202a3b60fbccd.tar.gz org.eclipse.jetty.project-e46cc961ac198dca38e3a277e43202a3b60fbccd.tar.xz org.eclipse.jetty.project-e46cc961ac198dca38e3a277e43202a3b60fbccd.zip |
Merge branch 'jetty-9' of ssh://git.eclipse.org/gitroot/jetty/org.eclipse.jetty.project into jetty-9
Diffstat (limited to 'jetty-websocket')
2 files changed, 25 insertions, 21 deletions
diff --git a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClientFactory.java b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClientFactory.java index 8fedb8932b..484fc92a82 100644 --- a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClientFactory.java +++ b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClientFactory.java @@ -41,55 +41,57 @@ import org.eclipse.jetty.websocket.driver.WebSocketEventDriver; public class WebSocketClientFactory extends AggregateLifeCycle { private static final Logger LOG = Log.getLogger(WebSocketClientFactory.class); - /** - * Have the factory maintain 1 and only 1 scheduler. All connections share this scheduler. - */ - private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); private final Queue<WebSocketConnection> connections = new ConcurrentLinkedQueue<>(); private final ByteBufferPool bufferPool = new StandardByteBufferPool(); private final Executor executor; + private final ScheduledExecutorService scheduler; private final WebSocketClientSelectorManager selector; private final EventMethodsCache methodsCache; private final WebSocketPolicy policy; public WebSocketClientFactory() { - this(new QueuedThreadPool(),null); + this(new QueuedThreadPool()); } public WebSocketClientFactory(Executor threadPool) { - this(threadPool,null); + this(threadPool, Executors.newSingleThreadScheduledExecutor()); } - public WebSocketClientFactory(Executor executor, SslContextFactory sslContextFactory) + public WebSocketClientFactory(SslContextFactory sslContextFactory) + { + this(new QueuedThreadPool(), Executors.newSingleThreadScheduledExecutor(), sslContextFactory); + } + + public WebSocketClientFactory(Executor threadPool, ScheduledExecutorService scheduler) + { + this(threadPool, scheduler, null); + } + + public WebSocketClientFactory(Executor executor, ScheduledExecutorService scheduler, SslContextFactory sslContextFactory) { if (executor == null) - { throw new IllegalArgumentException("Executor is required"); - } this.executor = executor; addBean(executor); + if (scheduler == null) + throw new IllegalArgumentException("Scheduler is required"); + this.scheduler = scheduler; + if (sslContextFactory != null) - { addBean(sslContextFactory); - } this.policy = WebSocketPolicy.newClientPolicy(); - selector = new WebSocketClientSelectorManager(bufferPool,executor,policy); + selector = new WebSocketClientSelectorManager(bufferPool, executor, scheduler, policy); selector.setSslContextFactory(sslContextFactory); addBean(selector); this.methodsCache = new EventMethodsCache(); } - public WebSocketClientFactory(SslContextFactory sslContextFactory) - { - this(null,sslContextFactory); - } - private void closeConnections() { for (WebSocketConnection connection : connections) @@ -150,6 +152,6 @@ public class WebSocketClientFactory extends AggregateLifeCycle public WebSocketEventDriver newWebSocketDriver(Object websocketPojo) { - return new WebSocketEventDriver(websocketPojo,methodsCache,policy,getBufferPool()); + return new WebSocketEventDriver(websocketPojo, methodsCache, policy, getBufferPool()); } } diff --git a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java index 64124c85d2..fedfba91c7 100644 --- a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java +++ b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java @@ -39,16 +39,18 @@ import org.eclipse.jetty.websocket.io.WebSocketAsyncConnection; public class WebSocketClientSelectorManager extends SelectorManager { - private SslContextFactory sslContextFactory; private final Executor executor; + private final ScheduledExecutorService scheduler; private final WebSocketPolicy policy; private final ByteBufferPool bufferPool; + private SslContextFactory sslContextFactory; - public WebSocketClientSelectorManager(ByteBufferPool bufferPool, Executor executor, WebSocketPolicy policy) + public WebSocketClientSelectorManager(ByteBufferPool bufferPool, Executor executor, ScheduledExecutorService scheduler, WebSocketPolicy policy) { super(); this.bufferPool = bufferPool; this.executor = executor; + this.scheduler = scheduler; this.policy = policy; } @@ -135,7 +137,7 @@ public class WebSocketClientSelectorManager extends SelectorManager @Override protected SelectChannelEndPoint newEndPoint(SocketChannel channel, ManagedSelector selectSet, SelectionKey selectionKey) throws IOException { - return new SelectChannelEndPoint(channel,selectSet, selectionKey, policy.getIdleTimeout()); + return new SelectChannelEndPoint(channel,selectSet, selectionKey, scheduler, policy.getIdleTimeout()); } public SSLEngine newSSLEngine(SslContextFactory sslContextFactory, SocketChannel channel) |