Issue #3290 async onOpen, onClose and onError
Fixed OSGi tests. Signed-off-by: Greg Wilkins <gregw@webtide.com>
This commit is contained in:
parent
cf0eaecbdc
commit
f5751618bd
|
@ -90,6 +90,16 @@ public interface FrameHandler extends IncomingFrames
|
||||||
*/
|
*/
|
||||||
void onFrame(Frame frame, Callback callback);
|
void onFrame(Frame frame, Callback callback);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An error has occurred or been detected in websocket-core and being reported to FrameHandler.
|
||||||
|
* A call to onError will be followed by a call to {@link #onClosed(CloseStatus, Callback)} giving the close status
|
||||||
|
* derived from the error.
|
||||||
|
*
|
||||||
|
* @param cause the reason for the error
|
||||||
|
* @param callback the callback to indicate success in processing (or failure)
|
||||||
|
*/
|
||||||
|
void onError(Throwable cause, Callback callback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the Close Handshake Complete event.
|
* This is the Close Handshake Complete event.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -102,15 +112,6 @@ public interface FrameHandler extends IncomingFrames
|
||||||
*/
|
*/
|
||||||
void onClosed(CloseStatus closeStatus, Callback callback);
|
void onClosed(CloseStatus closeStatus, Callback callback);
|
||||||
|
|
||||||
/**
|
|
||||||
* An error has occurred or been detected in websocket-core and being reported to FrameHandler.
|
|
||||||
* A call to onError will be followed by a call to {@link #onClosed(CloseStatus, Callback)} giving the close status
|
|
||||||
* derived from the error.
|
|
||||||
*
|
|
||||||
* @param cause the reason for the error
|
|
||||||
* @param callback the callback to indicate success in processing (or failure)
|
|
||||||
*/
|
|
||||||
void onError(Throwable cause, Callback callback);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does the FrameHandler manage it's own demand?
|
* Does the FrameHandler manage it's own demand?
|
||||||
|
@ -216,22 +217,6 @@ public interface FrameHandler extends IncomingFrames
|
||||||
*/
|
*/
|
||||||
boolean isSecure();
|
boolean isSecure();
|
||||||
|
|
||||||
/**
|
|
||||||
* Issue a harsh abort of the underlying connection.
|
|
||||||
* <p>
|
|
||||||
* This will terminate the connection, without sending a websocket close frame.
|
|
||||||
* No WebSocket Protocol close handshake will be performed.
|
|
||||||
* </p>
|
|
||||||
* <p>
|
|
||||||
* Once called, any read/write activity on the websocket from this point will be indeterminate.
|
|
||||||
* This can result in the {@link #onError(Throwable,Callback)} event being called indicating any issue that arises.
|
|
||||||
* </p>
|
|
||||||
* <p>
|
|
||||||
* Once the underlying connection has been determined to be closed, the {@link #onClosed(CloseStatus,Callback)} event will be called.
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
void abort();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Client or Server behaviour
|
* @return Client or Server behaviour
|
||||||
*/
|
*/
|
||||||
|
@ -294,6 +279,22 @@ public interface FrameHandler extends IncomingFrames
|
||||||
*/
|
*/
|
||||||
void close(int statusCode, String reason, Callback callback);
|
void close(int statusCode, String reason, Callback callback);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Issue a harsh abort of the underlying connection.
|
||||||
|
* <p>
|
||||||
|
* This will terminate the connection, without sending a websocket close frame.
|
||||||
|
* No WebSocket Protocol close handshake will be performed.
|
||||||
|
* </p>
|
||||||
|
* <p>
|
||||||
|
* Once called, any read/write activity on the websocket from this point will be indeterminate.
|
||||||
|
* This can result in the {@link #onError(Throwable,Callback)} event being called indicating any issue that arises.
|
||||||
|
* </p>
|
||||||
|
* <p>
|
||||||
|
* Once the underlying connection has been determined to be closed, the {@link #onClosed(CloseStatus,Callback)} event will be called.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
void abort();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manage flow control by indicating demand for handling Frames. A call to
|
* Manage flow control by indicating demand for handling Frames. A call to
|
||||||
* {@link FrameHandler#onFrame(Frame, Callback)} will only be made if a
|
* {@link FrameHandler#onFrame(Frame, Callback)} will only be made if a
|
||||||
|
|
|
@ -58,23 +58,23 @@ public class WebSocketChannelState
|
||||||
{
|
{
|
||||||
synchronized (this)
|
synchronized (this)
|
||||||
{
|
{
|
||||||
if (_channelState != State.CONNECTED)
|
switch(_channelState)
|
||||||
throw new IllegalStateException(_channelState.toString());
|
{
|
||||||
|
case CONNECTED:
|
||||||
|
_channelState = State.OPEN;
|
||||||
|
break;
|
||||||
|
|
||||||
_channelState = State.OPEN;
|
case OSHUT:
|
||||||
|
case CLOSED:
|
||||||
|
// Already closed in onOpen handler
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new IllegalStateException(_channelState.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
return String.format("%s@%x{%s,i=%s,o=%s,c=%s}",getClass().getSimpleName(),hashCode(),
|
|
||||||
_channelState,
|
|
||||||
OpCode.name(_incomingContinuation),
|
|
||||||
OpCode.name(_outgoingContinuation),
|
|
||||||
_closeStatus);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public State getState()
|
public State getState()
|
||||||
{
|
{
|
||||||
|
@ -205,6 +205,16 @@ public class WebSocketChannelState
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return String.format("%s@%x{%s,i=%s,o=%s,c=%s}",getClass().getSimpleName(),hashCode(),
|
||||||
|
_channelState,
|
||||||
|
OpCode.name(_incomingContinuation),
|
||||||
|
OpCode.name(_outgoingContinuation),
|
||||||
|
_closeStatus);
|
||||||
|
}
|
||||||
|
|
||||||
private static byte checkDataSequence(byte opcode, boolean fin, byte lastOpCode) throws ProtocolException
|
private static byte checkDataSequence(byte opcode, boolean fin, byte lastOpCode) throws ProtocolException
|
||||||
{
|
{
|
||||||
switch (opcode)
|
switch (opcode)
|
||||||
|
|
|
@ -113,6 +113,7 @@ public class WebSocketClientServerTest
|
||||||
{
|
{
|
||||||
LOG.info("channel aborted");
|
LOG.info("channel aborted");
|
||||||
getCoreSession().abort();
|
getCoreSession().abort();
|
||||||
|
callback.failed(new Exception());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue