Issue #207 - correcting lifecycle of WebSocketSession and EndpointFunctions

This commit is contained in:
Joakim Erdfelt 2016-10-12 11:13:35 -07:00
parent 34f0007153
commit 0e9841a3cc
5 changed files with 9 additions and 6 deletions

View File

@ -116,5 +116,6 @@ public abstract class ConnectPromise extends FuturePromise<Session> implements R
public void setSession(WebSocketSession session)
{
this.session = session;
this.client.addManaged(session);
}
}

View File

@ -320,7 +320,6 @@ public class UpgradeConnection extends AbstractConnection implements Connection.
// Wire up Session <-> Connection
connection.addListener(session);
connectPromise.setSession(session);
// Initialize / Negotiate Extensions
ExtensionStack extensionStack = new ExtensionStack(connectPromise.getClient().getExtensionFactory());
@ -338,7 +337,9 @@ public class UpgradeConnection extends AbstractConnection implements Connection.
extensionStack.setNextOutgoing(connection);
session.addManaged(extensionStack);
connectPromise.getClient().addManaged(session);
// let waiting client know about session
connectPromise.setSession(session);
// Now swap out the connection
endp.upgrade(connection);

View File

@ -174,8 +174,8 @@ public class WebSocketSession extends ContainerLifeCycle implements Session, Rem
LOG.debug("Using RemoteEndpointFactory: {}", remoteEndpointFactory);
this.endpointFunctions = newEndpointFunctions(this.endpoint);
addBean(this.endpointFunctions);
addManaged(this.endpointFunctions);
super.doStart();
}

View File

@ -110,8 +110,8 @@ public class CommonEndpointFunctions<T extends Session> extends AbstractLifeCycl
@Override
protected void doStart() throws Exception
{
super.doStart();
discoverEndpointFunctions(this.endpoint);
super.doStart();
}
protected void discoverEndpointFunctions(Object endpoint)

View File

@ -20,6 +20,7 @@ package org.eclipse.jetty.websocket.common.function;
import java.nio.ByteBuffer;
import org.eclipse.jetty.util.component.LifeCycle;
import org.eclipse.jetty.websocket.api.extensions.Frame;
import org.eclipse.jetty.websocket.common.CloseInfo;
@ -28,7 +29,7 @@ import org.eclipse.jetty.websocket.common.CloseInfo;
*
* @param <T> the Session object
*/
public interface EndpointFunctions<T>
public interface EndpointFunctions<T> extends LifeCycle
{
void onOpen(T session);