Removing unused websocket-core files, detrius from old merge
This commit is contained in:
parent
bfba20565a
commit
7211ce230e
|
@ -1,30 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// 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.core.api;
|
||||
|
||||
/**
|
||||
* Connection suspend token
|
||||
*/
|
||||
public interface SuspendToken
|
||||
{
|
||||
/**
|
||||
* Resume a previously suspended connection.
|
||||
*/
|
||||
void resume();
|
||||
}
|
|
@ -1,217 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// 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.core.extensions.mux;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.jetty.util.QuotedStringTokenizer;
|
||||
import org.eclipse.jetty.util.StringUtil;
|
||||
import org.eclipse.jetty.websocket.core.api.UpgradeRequest;
|
||||
import org.eclipse.jetty.websocket.core.protocol.ExtensionConfig;
|
||||
|
||||
public class MuxRequest implements UpgradeRequest
|
||||
{
|
||||
public static final String HEADER_VALUE_DELIM="\"\\\n\r\t\f\b%+ ;=";
|
||||
|
||||
public static UpgradeRequest merge(UpgradeRequest baseReq, UpgradeRequest deltaReq)
|
||||
{
|
||||
MuxRequest req = new MuxRequest(baseReq);
|
||||
|
||||
req.method = overlay(deltaReq.getMethod(),req.getMethod());
|
||||
|
||||
// TODO: finish
|
||||
|
||||
return req;
|
||||
}
|
||||
|
||||
private static String overlay(String val, String defVal)
|
||||
{
|
||||
if (val == null)
|
||||
{
|
||||
return defVal;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
public static UpgradeRequest parse(ByteBuffer handshake)
|
||||
{
|
||||
MuxRequest req = new MuxRequest();
|
||||
// TODO Auto-generated method stub
|
||||
return req;
|
||||
}
|
||||
|
||||
private String method;
|
||||
private String httpVersion;
|
||||
private String remoteURI;
|
||||
private String queryString;
|
||||
private List<String> subProtocols;
|
||||
private Map<String, String> cookies;
|
||||
private List<ExtensionConfig> extensions;
|
||||
private Map<String, List<String>> headers;
|
||||
private Map<String, String[]> parameterMap;
|
||||
|
||||
public MuxRequest()
|
||||
{
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public MuxRequest(UpgradeRequest copy)
|
||||
{
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addExtensions(String... extConfigs)
|
||||
{
|
||||
for (String extConfig : extConfigs)
|
||||
{
|
||||
extensions.add(ExtensionConfig.parse(extConfig));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getCookieMap()
|
||||
{
|
||||
return cookies;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ExtensionConfig> getExtensions()
|
||||
{
|
||||
return extensions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHeader(String name)
|
||||
{
|
||||
List<String> values = headers.get(name);
|
||||
// not set
|
||||
if ((values == null) || (values.isEmpty()))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
// only 1 value (most common scenario)
|
||||
if (values.size() == 1)
|
||||
{
|
||||
return values.get(0);
|
||||
}
|
||||
// merge multiple values together
|
||||
StringBuilder ret = new StringBuilder();
|
||||
boolean delim = false;
|
||||
for (String value : values)
|
||||
{
|
||||
if (delim)
|
||||
{
|
||||
ret.append(", ");
|
||||
}
|
||||
QuotedStringTokenizer.quoteIfNeeded(ret,value,HEADER_VALUE_DELIM);
|
||||
delim = true;
|
||||
}
|
||||
return ret.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<String>> getHeaders()
|
||||
{
|
||||
return headers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHost()
|
||||
{
|
||||
return getHeader("Host");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHttpVersion()
|
||||
{
|
||||
return httpVersion;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMethod()
|
||||
{
|
||||
return method;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOrigin()
|
||||
{
|
||||
return getHeader("Origin");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String[]> getParameterMap()
|
||||
{
|
||||
return parameterMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQueryString()
|
||||
{
|
||||
return queryString;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRemoteURI()
|
||||
{
|
||||
return remoteURI;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getSubProtocols()
|
||||
{
|
||||
return subProtocols;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSubProtocol(String test)
|
||||
{
|
||||
for (String protocol : subProtocols)
|
||||
{
|
||||
if (protocol.equalsIgnoreCase(test))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOrigin(String test)
|
||||
{
|
||||
return test.equalsIgnoreCase(getOrigin());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubProtocols(String protocols)
|
||||
{
|
||||
this.subProtocols.clear();
|
||||
if (StringUtil.isBlank(protocols))
|
||||
{
|
||||
return;
|
||||
}
|
||||
for (String protocol : protocols.split("\\s*,\\s*"))
|
||||
{
|
||||
this.subProtocols.add(protocol);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,129 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// 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.core.extensions.mux;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.jetty.websocket.core.api.UpgradeException;
|
||||
import org.eclipse.jetty.websocket.core.api.UpgradeResponse;
|
||||
import org.eclipse.jetty.websocket.core.protocol.ExtensionConfig;
|
||||
|
||||
public class MuxResponse implements UpgradeResponse
|
||||
{
|
||||
@Override
|
||||
public void addHeader(String name, String value)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAcceptedSubProtocol()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ExtensionConfig> getExtensions()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getHeaderNamesSet()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHeaderValue(String name)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<String> getHeaderValues(String name)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStatusCode()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStatusReason()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSuccess()
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendForbidden(String message) throws IOException
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAcceptedSubProtocol(String protocol)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExtensions(List<ExtensionConfig> extensions)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHeader(String name, String value)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validateWebSocketHash(String expectedHash) throws UpgradeException
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,90 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// 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.core.io;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.eclipse.jetty.util.Callback;
|
||||
import org.eclipse.jetty.util.FutureCallback;
|
||||
import org.eclipse.jetty.util.log.Log;
|
||||
import org.eclipse.jetty.util.log.Logger;
|
||||
import org.eclipse.jetty.websocket.core.api.WebSocketException;
|
||||
import org.eclipse.jetty.websocket.core.protocol.WebSocketFrame;
|
||||
|
||||
/**
|
||||
* Utility class to pipe {@link IncomingFrames} and {@link OutgoingFrames} around
|
||||
*/
|
||||
public class FramePipes
|
||||
{
|
||||
private static class In2Out implements IncomingFrames
|
||||
{
|
||||
private static final Logger LOG = Log.getLogger(In2Out.class);
|
||||
private OutgoingFrames outgoing;
|
||||
|
||||
public In2Out(OutgoingFrames outgoing)
|
||||
{
|
||||
this.outgoing = outgoing;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incoming(WebSocketException e)
|
||||
{
|
||||
/* cannot send exception on */
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incoming(WebSocketFrame frame)
|
||||
{
|
||||
try
|
||||
{
|
||||
this.outgoing.output(null,new FutureCallback<>(),frame);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
LOG.debug(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class Out2In implements OutgoingFrames
|
||||
{
|
||||
private IncomingFrames incoming;
|
||||
|
||||
public Out2In(IncomingFrames incoming)
|
||||
{
|
||||
this.incoming = incoming;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <C> void output(C context, Callback<C> callback, WebSocketFrame frame) throws IOException
|
||||
{
|
||||
this.incoming.incoming(frame);
|
||||
}
|
||||
}
|
||||
|
||||
public static OutgoingFrames to(final IncomingFrames incoming)
|
||||
{
|
||||
return new Out2In(incoming);
|
||||
}
|
||||
|
||||
public static IncomingFrames to(final OutgoingFrames outgoing)
|
||||
{
|
||||
return new In2Out(outgoing);
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// 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.core.io;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jetty.websocket.core.api.Extension;
|
||||
import org.eclipse.jetty.websocket.core.api.LogicalConnection;
|
||||
|
||||
public interface InternalConnection extends LogicalConnection
|
||||
{
|
||||
void configureFromExtensions(List<Extension> extensions);
|
||||
|
||||
void setIncoming(IncomingFrames incoming);
|
||||
|
||||
void setSession(WebSocketSession session);
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// 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.core.extensions.mux.add;
|
||||
|
||||
import org.eclipse.jetty.websocket.core.extensions.mux.op.MuxAddChannelResponse;
|
||||
import org.eclipse.jetty.websocket.core.io.WebSocketSession;
|
||||
|
||||
public class DummyMuxAddClient implements MuxAddClient
|
||||
{
|
||||
@Override
|
||||
public WebSocketSession createSession(MuxAddChannelResponse response)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -1,104 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// 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.core.extensions.mux.add;
|
||||
|
||||
import org.eclipse.jetty.websocket.core.api.WebSocketPolicy;
|
||||
import org.eclipse.jetty.websocket.core.extensions.mux.MuxChannel;
|
||||
import org.eclipse.jetty.websocket.core.extensions.mux.MuxDecoder;
|
||||
import org.eclipse.jetty.websocket.core.extensions.mux.MuxEncoder;
|
||||
import org.eclipse.jetty.websocket.core.extensions.mux.MuxOp;
|
||||
import org.eclipse.jetty.websocket.core.extensions.mux.Muxer;
|
||||
import org.eclipse.jetty.websocket.core.extensions.mux.op.MuxAddChannelRequest;
|
||||
import org.eclipse.jetty.websocket.core.extensions.mux.op.MuxAddChannelResponse;
|
||||
import org.eclipse.jetty.websocket.core.io.LocalWebSocketConnection;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TestName;
|
||||
|
||||
public class MuxerAddClientTest
|
||||
{
|
||||
@Rule
|
||||
public TestName testname = new TestName();
|
||||
|
||||
@Test
|
||||
@Ignore("Interrim, not functional yet")
|
||||
public void testAddChannel_Client() throws Exception
|
||||
{
|
||||
// Client side physical socket
|
||||
LocalWebSocketConnection physical = new LocalWebSocketConnection(testname);
|
||||
physical.setPolicy(WebSocketPolicy.newClientPolicy());
|
||||
physical.onOpen();
|
||||
|
||||
// Server Reader
|
||||
MuxDecoder serverRead = new MuxDecoder();
|
||||
|
||||
// Client side Muxer
|
||||
Muxer muxer = new Muxer(physical,serverRead);
|
||||
DummyMuxAddClient addClient = new DummyMuxAddClient();
|
||||
muxer.setAddClient(addClient);
|
||||
|
||||
// Server Writer
|
||||
MuxEncoder serverWrite = MuxEncoder.toIncoming(physical);
|
||||
|
||||
// Build AddChannelRequest handshake data
|
||||
StringBuilder request = new StringBuilder();
|
||||
request.append("GET /echo HTTP/1.1\r\n");
|
||||
request.append("Host: localhost\r\n");
|
||||
request.append("Upgrade: websocket\r\n");
|
||||
request.append("Connection: Upgrade\r\n");
|
||||
request.append("Sec-WebSocket-Key: ZDTIRU5vU9xOfkg8JAgN3A==\r\n");
|
||||
request.append("Sec-WebSocket-Version: 13\r\n");
|
||||
request.append("\r\n");
|
||||
|
||||
// Build AddChannelRequest
|
||||
long channelId = 1L;
|
||||
MuxAddChannelRequest req = new MuxAddChannelRequest();
|
||||
req.setChannelId(channelId);
|
||||
req.setEncoding((byte)0);
|
||||
req.setHandshake(request.toString());
|
||||
|
||||
// Have client sent AddChannelRequest
|
||||
MuxChannel channel = muxer.getChannel(channelId,true);
|
||||
MuxEncoder clientWrite = MuxEncoder.toOutgoing(channel);
|
||||
clientWrite.op(req);
|
||||
|
||||
// Have server read request
|
||||
serverRead.assertHasOp(MuxOp.ADD_CHANNEL_REQUEST,1);
|
||||
|
||||
// prepare AddChannelResponse
|
||||
StringBuilder response = new StringBuilder();
|
||||
response.append("HTTP/1.1 101 Switching Protocols\r\n");
|
||||
response.append("Upgrade: websocket\r\n");
|
||||
response.append("Connection: upgrade\r\n");
|
||||
response.append("Sec-WebSocket-Accept: Kgo85/8KVE8YPONSeyhgL3GwqhI=\r\n");
|
||||
response.append("\r\n");
|
||||
|
||||
MuxAddChannelResponse resp = new MuxAddChannelResponse();
|
||||
resp.setChannelId(channelId);
|
||||
resp.setFailed(false);
|
||||
resp.setEncoding((byte)0);
|
||||
resp.setHandshake(resp.toString());
|
||||
|
||||
// Server writes add channel response
|
||||
serverWrite.op(resp);
|
||||
|
||||
// TODO: handle the upgrade on client side.
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue