Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt2012-07-25 16:16:10 +0000
committerJoakim Erdfelt2012-07-25 16:16:10 +0000
commite46cc961ac198dca38e3a277e43202a3b60fbccd (patch)
tree3cfd60dc043fe6e435e7768a35a9a6438db14d89 /jetty-websocket
parenta49238ceba125c890ba22345af24978d9655b923 (diff)
parent822abe514e55c7795cc4721d86c4d8d059e9b218 (diff)
downloadorg.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')
-rw-r--r--jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClientFactory.java38
-rw-r--r--jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientSelectorManager.java8
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)

Back to the top