Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jetty-websocket/websocket-mux-extension/src/test/java/org/eclipse/jetty/websocket/mux/helper/LocalWebSocketConnection.java')
-rw-r--r--jetty-websocket/websocket-mux-extension/src/test/java/org/eclipse/jetty/websocket/mux/helper/LocalWebSocketConnection.java250
1 files changed, 250 insertions, 0 deletions
diff --git a/jetty-websocket/websocket-mux-extension/src/test/java/org/eclipse/jetty/websocket/mux/helper/LocalWebSocketConnection.java b/jetty-websocket/websocket-mux-extension/src/test/java/org/eclipse/jetty/websocket/mux/helper/LocalWebSocketConnection.java
new file mode 100644
index 0000000000..cd86267399
--- /dev/null
+++ b/jetty-websocket/websocket-mux-extension/src/test/java/org/eclipse/jetty/websocket/mux/helper/LocalWebSocketConnection.java
@@ -0,0 +1,250 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+//
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+//
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+//
+
+package org.eclipse.jetty.websocket.mux.helper;
+
+import java.net.InetSocketAddress;
+import java.util.concurrent.Executor;
+
+import org.eclipse.jetty.io.ByteBufferPool;
+import org.eclipse.jetty.io.MappedByteBufferPool;
+import org.eclipse.jetty.util.log.Log;
+import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.util.thread.ExecutorThreadPool;
+import org.eclipse.jetty.websocket.api.StatusCode;
+import org.eclipse.jetty.websocket.api.SuspendToken;
+import org.eclipse.jetty.websocket.api.WebSocketPolicy;
+import org.eclipse.jetty.websocket.api.WriteCallback;
+import org.eclipse.jetty.websocket.api.extensions.Frame;
+import org.eclipse.jetty.websocket.api.extensions.IncomingFrames;
+import org.eclipse.jetty.websocket.common.CloseInfo;
+import org.eclipse.jetty.websocket.common.ConnectionState;
+import org.eclipse.jetty.websocket.common.LogicalConnection;
+import org.eclipse.jetty.websocket.common.WebSocketSession;
+import org.eclipse.jetty.websocket.common.io.IOState;
+import org.eclipse.jetty.websocket.common.io.IOState.ConnectionStateListener;
+import org.junit.rules.TestName;
+
+public class LocalWebSocketConnection implements LogicalConnection, IncomingFrames, ConnectionStateListener
+{
+ private static final Logger LOG = Log.getLogger(LocalWebSocketConnection.class);
+ private final String id;
+ private final ByteBufferPool bufferPool;
+ private final Executor executor;
+ private WebSocketPolicy policy = WebSocketPolicy.newServerPolicy();
+ private IncomingFrames incoming;
+ private IOState ioState = new IOState();
+
+ public LocalWebSocketConnection()
+ {
+ this("anon");
+ }
+
+ public LocalWebSocketConnection(String id)
+ {
+ this.id = id;
+ this.bufferPool = new MappedByteBufferPool();
+ this.executor = new ExecutorThreadPool();
+ this.ioState.addListener(this);
+ }
+
+ public LocalWebSocketConnection(TestName testname)
+ {
+ this(testname.getMethodName());
+ }
+
+ @Override
+ public Executor getExecutor()
+ {
+ return executor;
+ }
+
+ @Override
+ public void close()
+ {
+ close(StatusCode.NORMAL,null);
+ }
+
+ @Override
+ public void close(int statusCode, String reason)
+ {
+ LOG.debug("close({}, {})",statusCode,reason);
+ CloseInfo close = new CloseInfo(statusCode,reason);
+ ioState.onCloseLocal(close);
+ }
+
+ public void connect()
+ {
+ LOG.debug("connect()");
+ ioState.onConnected();
+ }
+
+ @Override
+ public void disconnect()
+ {
+ LOG.debug("disconnect()");
+ }
+
+ @Override
+ public ByteBufferPool getBufferPool()
+ {
+ return this.bufferPool;
+ }
+
+ @Override
+ public long getIdleTimeout()
+ {
+ return 0;
+ }
+
+ public IncomingFrames getIncoming()
+ {
+ return incoming;
+ }
+
+ @Override
+ public IOState getIOState()
+ {
+ return ioState;
+ }
+
+ @Override
+ public InetSocketAddress getLocalAddress()
+ {
+ return null;
+ }
+
+ @Override
+ public long getMaxIdleTimeout()
+ {
+ return 0;
+ }
+
+ @Override
+ public WebSocketPolicy getPolicy()
+ {
+ return policy;
+ }
+
+ @Override
+ public InetSocketAddress getRemoteAddress()
+ {
+ return null;
+ }
+
+ @Override
+ public WebSocketSession getSession()
+ {
+ return null;
+ }
+
+ @Override
+ public void incomingError(Throwable e)
+ {
+ incoming.incomingError(e);
+ }
+
+ @Override
+ public void incomingFrame(Frame frame)
+ {
+ incoming.incomingFrame(frame);
+ }
+
+ @Override
+ public boolean isOpen()
+ {
+ return getIOState().isOpen();
+ }
+
+ @Override
+ public boolean isReading()
+ {
+ return false;
+ }
+
+ @Override
+ public void onConnectionStateChange(ConnectionState state)
+ {
+ LOG.debug("Connection State Change: {}",state);
+ switch (state)
+ {
+ case CLOSED:
+ this.disconnect();
+ break;
+ case CLOSING:
+ if (ioState.wasRemoteCloseInitiated())
+ {
+ // send response close frame
+ CloseInfo close = ioState.getCloseInfo();
+ LOG.debug("write close frame: {}",close);
+ ioState.onCloseLocal(close);
+ }
+ default:
+ break;
+ }
+ }
+
+ public void open()
+ {
+ LOG.debug("open()");
+ ioState.onOpened();
+ }
+
+ @Override
+ public void outgoingFrame(Frame frame, WriteCallback callback)
+ {
+ }
+
+ @Override
+ public void resume()
+ {
+ }
+
+ @Override
+ public void setMaxIdleTimeout(long ms)
+ {
+ }
+
+ @Override
+ public void setNextIncomingFrames(IncomingFrames incoming)
+ {
+ this.incoming = incoming;
+ }
+
+ public void setPolicy(WebSocketPolicy policy)
+ {
+ this.policy = policy;
+ }
+
+ @Override
+ public void setSession(WebSocketSession session)
+ {
+ }
+
+ @Override
+ public SuspendToken suspend()
+ {
+ return null;
+ }
+
+ @Override
+ public String toString()
+ {
+ return String.format("%s[%s]",LocalWebSocketConnection.class.getSimpleName(),id);
+ }
+}

Back to the top