Class AbstractWebSocketConnection
- java.lang.Object
-
- org.eclipse.jetty.io.AbstractConnection
-
- org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,Connection
,Connection.UpgradeTo
,Dumpable
,OutgoingFrames
,SuspendToken
,LogicalConnection
- Direct Known Subclasses:
WebSocketClientConnection
,WebSocketServerConnection
public abstract class AbstractWebSocketConnection extends AbstractConnection implements LogicalConnection, Connection.UpgradeTo, Dumpable
Provides the implementation ofLogicalConnection
within the framework of the newConnection
framework ofjetty-io
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AbstractWebSocketConnection.Stats
Deprecated.-
Nested classes/interfaces inherited from interface org.eclipse.jetty.io.Connection
Connection.Listener, Connection.UpgradeFrom, Connection.UpgradeTo
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
Dumpable.DumpableContainer
-
-
Constructor Summary
Constructors Constructor Description AbstractWebSocketConnection(EndPoint endp, java.util.concurrent.Executor executor, Scheduler scheduler, WebSocketPolicy policy, ByteBufferPool bufferPool)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
canReadWebSocketFrames()
Test if Connection State allows for reading of frames.boolean
canWriteWebSocketFrames()
Test if Connection State allows for writing frames.void
close()
Jetty Connection Closevoid
close(java.lang.Throwable cause)
Close the connection based on the throwablevoid
close(CloseInfo close, Callback callback)
Request a local close.void
disconnect()
Terminate the connection (no close frame sent)void
dump(java.lang.Appendable out, java.lang.String indent)
Dump this object (and children) into an Appendable using the provided indent after any new lines.java.lang.String
dumpSelf()
The description of this/self found in the dump.void
fillInterested()
Utility method to be called to register read interest.ByteBufferPool
getBufferPool()
Get the ByteBufferPool in use by the connectionlong
getBytesIn()
long
getBytesOut()
java.util.concurrent.Executor
getExecutor()
Get the Executor used by this connection.java.util.List<ExtensionConfig>
getExtensions()
Get the list of extensions in use.Generator
getGenerator()
java.lang.String
getId()
Get Unique ID for the Connectionlong
getIdleTimeout()
Get the read/write idle timeout.java.net.InetSocketAddress
getLocalAddress()
Get the localInetSocketAddress
in use for this connection.long
getMaxIdleTimeout()
Set the maximum number of milliseconds of idleness before the connection is closed/disconnected, (ie no frames are either sent or received)long
getMessagesIn()
long
getMessagesOut()
Parser
getParser()
WebSocketPolicy
getPolicy()
The policy that the connection is running under.java.net.InetSocketAddress
getRemoteAddress()
Get the remote Address in use for this connection.Scheduler
getScheduler()
AbstractWebSocketConnection.Stats
getStats()
Deprecated.boolean
isOpen()
Test if logical connection is still openboolean
isReading()
Tests if the connection is actively reading.void
onFillable()
Callback method invoked when the endpoint is ready to be read.protected void
onFillInterestedFailed(java.lang.Throwable cause)
Callback method invoked when the endpoint failed to be ready to be read.boolean
onIdleExpired()
Callback method invoked upon an idle timeout event.protected boolean
onReadTimeout(java.lang.Throwable timeout)
Event for no activity on connection (read or write)void
onUpgradeTo(java.nio.ByteBuffer buffer)
Extra bytes from the initial HTTP upgrade that need to be processed by the websocket parser before starting to read bytes from the connectionboolean
opened()
Set the state to opened (the application onOpen() method has been called successfully).boolean
opening()
Set the state to upgrade/opening handshake has completed.void
outgoingFrame(Frame frame, WriteCallback callback, BatchMode batchMode)
Frame from API, User, or Internal implementation destined for network.void
remoteClose(CloseInfo close)
Report that the Remote Endpoint CLOSE Frame has been receivedvoid
resume()
Resume a previously suspended connection.void
setExtensions(java.util.List<ExtensionConfig> extensions)
Get the list of extensions in use.protected void
setInitialBuffer(java.nio.ByteBuffer initialBuffer)
Extra bytes from the initial HTTP upgrade that need to be processed by the websocket parser before starting to read bytes from the connectionvoid
setInputBufferSize(int inputBufferSize)
void
setMaxIdleTimeout(long ms)
Set the maximum number of milliseconds of idleness before the connection is closed/disconnected, (ie no frames are either sent or received)void
setNextIncomingFrames(IncomingFrames incoming)
Set where the connection should send the incoming frames to.void
setSession(WebSocketSession session)
Associate the Active Session with the connection.SuspendToken
suspend()
Suspend a the incoming read events on the connection.java.lang.String
toConnectionString()
java.lang.String
toStateString()
Get the Connection State as a String-
Methods inherited from class org.eclipse.jetty.io.AbstractConnection
addListener, failedCallback, getCreatedTimeStamp, getEndPoint, getInputBufferSize, isFillInterested, onClose, onOpen, removeListener, toString, tryFillInterested, tryFillInterested
-
-
-
-
Constructor Detail
-
AbstractWebSocketConnection
public AbstractWebSocketConnection(EndPoint endp, java.util.concurrent.Executor executor, Scheduler scheduler, WebSocketPolicy policy, ByteBufferPool bufferPool)
-
-
Method Detail
-
getExecutor
public java.util.concurrent.Executor getExecutor()
Description copied from interface:LogicalConnection
Get the Executor used by this connection.- Specified by:
getExecutor
in interfaceLogicalConnection
- Overrides:
getExecutor
in classAbstractConnection
- Returns:
- the executor
-
close
public void close(CloseInfo close, Callback callback)
Description copied from interface:LogicalConnection
Request a local close.- Specified by:
close
in interfaceLogicalConnection
-
close
public void close(java.lang.Throwable cause)
Close the connection based on the throwable- Specified by:
close
in interfaceLogicalConnection
- Parameters:
cause
- the cause
-
canWriteWebSocketFrames
public boolean canWriteWebSocketFrames()
Description copied from interface:LogicalConnection
Test if Connection State allows for writing frames.- Specified by:
canWriteWebSocketFrames
in interfaceLogicalConnection
- Returns:
- true if able to write, false otherwise.
-
canReadWebSocketFrames
public boolean canReadWebSocketFrames()
Description copied from interface:LogicalConnection
Test if Connection State allows for reading of frames.- Specified by:
canReadWebSocketFrames
in interfaceLogicalConnection
- Returns:
- true if able to read, false otherwise.
-
toStateString
public java.lang.String toStateString()
Description copied from interface:LogicalConnection
Get the Connection State as a String- Specified by:
toStateString
in interfaceLogicalConnection
- Returns:
- the Connection State string
-
opening
public boolean opening()
Description copied from interface:LogicalConnection
Set the state to upgrade/opening handshake has completed.- Specified by:
opening
in interfaceLogicalConnection
- Returns:
- true if state is OPENING, false otherwise
-
opened
public boolean opened()
Description copied from interface:LogicalConnection
Set the state to opened (the application onOpen() method has been called successfully).Reads from network begin here.
- Specified by:
opened
in interfaceLogicalConnection
- Returns:
- true if state is OPENED, false otherwise
-
remoteClose
public void remoteClose(CloseInfo close)
Description copied from interface:LogicalConnection
Report that the Remote Endpoint CLOSE Frame has been received- Specified by:
remoteClose
in interfaceLogicalConnection
- Parameters:
close
- the close frame details
-
setSession
public void setSession(WebSocketSession session)
Description copied from interface:LogicalConnection
Associate the Active Session with the connection.- Specified by:
setSession
in interfaceLogicalConnection
- Parameters:
session
- the session for this connection
-
onIdleExpired
public boolean onIdleExpired()
Description copied from interface:Connection
Callback method invoked upon an idle timeout event.
Implementations of this method may return true to indicate that the idle timeout handling should proceed normally, typically failing the EndPoint and causing it to be closed.
When false is returned, the handling of the idle timeout event is halted immediately and the EndPoint left in the state it was before the idle timeout event.
- Specified by:
onIdleExpired
in interfaceConnection
- Overrides:
onIdleExpired
in classAbstractConnection
- Returns:
- true to let the EndPoint handle the idle timeout, false to tell the EndPoint to halt the handling of the idle timeout.
-
close
public void close()
Jetty Connection Close- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Specified by:
close
in interfaceConnection
- Overrides:
close
in classAbstractConnection
-
disconnect
public void disconnect()
Description copied from interface:LogicalConnection
Terminate the connection (no close frame sent)- Specified by:
disconnect
in interfaceLogicalConnection
-
fillInterested
public void fillInterested()
Description copied from class:AbstractConnection
Utility method to be called to register read interest.
After a call to this method,
AbstractConnection.onFillable()
orAbstractConnection.onFillInterestedFailed(Throwable)
will be called back as appropriate.- Overrides:
fillInterested
in classAbstractConnection
- See Also:
AbstractConnection.onFillable()
-
getBufferPool
public ByteBufferPool getBufferPool()
Description copied from interface:LogicalConnection
Get the ByteBufferPool in use by the connection- Specified by:
getBufferPool
in interfaceLogicalConnection
- Returns:
- the buffer pool
-
getExtensions
public java.util.List<ExtensionConfig> getExtensions()
Get the list of extensions in use.This list is negotiated during the WebSocket Upgrade Request/Response handshake.
- Returns:
- the list of negotiated extensions in use.
-
getGenerator
public Generator getGenerator()
-
getId
public java.lang.String getId()
Description copied from interface:LogicalConnection
Get Unique ID for the Connection- Specified by:
getId
in interfaceLogicalConnection
- Returns:
- the unique ID for the connection
-
getIdleTimeout
public long getIdleTimeout()
Description copied from interface:LogicalConnection
Get the read/write idle timeout.- Specified by:
getIdleTimeout
in interfaceLogicalConnection
- Returns:
- the idle timeout in milliseconds
-
getMaxIdleTimeout
public long getMaxIdleTimeout()
Description copied from interface:LogicalConnection
Set the maximum number of milliseconds of idleness before the connection is closed/disconnected, (ie no frames are either sent or received)- Specified by:
getMaxIdleTimeout
in interfaceLogicalConnection
- Returns:
- the idle timeout in milliseconds
-
getParser
public Parser getParser()
-
getPolicy
public WebSocketPolicy getPolicy()
Description copied from interface:LogicalConnection
The policy that the connection is running under.- Specified by:
getPolicy
in interfaceLogicalConnection
- Returns:
- the policy for the connection
-
getLocalAddress
public java.net.InetSocketAddress getLocalAddress()
Description copied from interface:LogicalConnection
Get the localInetSocketAddress
in use for this connection.Note: Non-physical connections, like during the Mux extensions, or during unit testing can result in a InetSocketAddress on port 0 and/or on localhost.
- Specified by:
getLocalAddress
in interfaceLogicalConnection
- Returns:
- the local address.
-
getRemoteAddress
public java.net.InetSocketAddress getRemoteAddress()
Description copied from interface:LogicalConnection
Get the remote Address in use for this connection.Note: Non-physical connections, like during the Mux extensions, or during unit testing can result in a InetSocketAddress on port 0 and/or on localhost.
- Specified by:
getRemoteAddress
in interfaceLogicalConnection
- Returns:
- the remote address.
-
getScheduler
public Scheduler getScheduler()
-
getStats
@Deprecated public AbstractWebSocketConnection.Stats getStats()
Deprecated.
-
isOpen
public boolean isOpen()
Description copied from interface:LogicalConnection
Test if logical connection is still open- Specified by:
isOpen
in interfaceLogicalConnection
- Returns:
- true if connection is open
-
isReading
public boolean isReading()
Description copied from interface:LogicalConnection
Tests if the connection is actively reading.- Specified by:
isReading
in interfaceLogicalConnection
- Returns:
- true if connection is actively attempting to read.
-
onFillable
public void onFillable()
Description copied from class:AbstractConnection
Callback method invoked when the endpoint is ready to be read.
- Specified by:
onFillable
in classAbstractConnection
- See Also:
AbstractConnection.fillInterested()
-
resume
public void resume()
Description copied from interface:SuspendToken
Resume a previously suspended connection.- Specified by:
resume
in interfaceSuspendToken
-
suspend
public SuspendToken suspend()
Description copied from interface:LogicalConnection
Suspend a the incoming read events on the connection.- Specified by:
suspend
in interfaceLogicalConnection
- Returns:
- the suspend token
-
onFillInterestedFailed
protected void onFillInterestedFailed(java.lang.Throwable cause)
Description copied from class:AbstractConnection
Callback method invoked when the endpoint failed to be ready to be read.
- Overrides:
onFillInterestedFailed
in classAbstractConnection
- Parameters:
cause
- the exception that caused the failure
-
setInitialBuffer
protected void setInitialBuffer(java.nio.ByteBuffer initialBuffer)
Extra bytes from the initial HTTP upgrade that need to be processed by the websocket parser before starting to read bytes from the connection- Parameters:
initialBuffer
- the bytes of unconsumed content encountered during upgrade
-
onReadTimeout
protected boolean onReadTimeout(java.lang.Throwable timeout)
Event for no activity on connection (read or write)- Overrides:
onReadTimeout
in classAbstractConnection
- Parameters:
timeout
- the cause of the read timeout- Returns:
- true to signal that the endpoint must be closed, false to keep the endpoint open
-
outgoingFrame
public void outgoingFrame(Frame frame, WriteCallback callback, BatchMode batchMode)
Frame from API, User, or Internal implementation destined for network.- Specified by:
outgoingFrame
in interfaceOutgoingFrames
- Parameters:
frame
- the frame to eventually write to the network layer.callback
- the callback to notify when the frame is written.batchMode
- the batch mode requested by the sender.
-
setExtensions
public void setExtensions(java.util.List<ExtensionConfig> extensions)
Get the list of extensions in use.This list is negotiated during the WebSocket Upgrade Request/Response handshake.
- Parameters:
extensions
- the list of negotiated extensions in use.
-
setInputBufferSize
public void setInputBufferSize(int inputBufferSize)
- Overrides:
setInputBufferSize
in classAbstractConnection
-
setMaxIdleTimeout
public void setMaxIdleTimeout(long ms)
Description copied from interface:LogicalConnection
Set the maximum number of milliseconds of idleness before the connection is closed/disconnected, (ie no frames are either sent or received)This idle timeout cannot be garunteed to take immediate effect for any active read/write actions. New read/write actions will have this new idle timeout.
- Specified by:
setMaxIdleTimeout
in interfaceLogicalConnection
- Parameters:
ms
- the number of milliseconds of idle timeout
-
dumpSelf
public java.lang.String dumpSelf()
Description copied from interface:Dumpable
The description of this/self found in the dump. Allows for alternative representation of Object other then .toString() where the long form output of toString() is represented in a cleaner way within the dump infrastructure.
-
dump
public void dump(java.lang.Appendable out, java.lang.String indent) throws java.io.IOException
Description copied from interface:Dumpable
Dump this object (and children) into an Appendable using the provided indent after any new lines. The indent should not be applied to the first object dumped.
-
toConnectionString
public java.lang.String toConnectionString()
- Overrides:
toConnectionString
in classAbstractConnection
-
onUpgradeTo
public void onUpgradeTo(java.nio.ByteBuffer buffer)
Extra bytes from the initial HTTP upgrade that need to be processed by the websocket parser before starting to read bytes from the connection- Specified by:
onUpgradeTo
in interfaceConnection.UpgradeTo
- Parameters:
buffer
- a non-null buffer of unconsumed bytes received from the upgrade-from connection. The buffer does not belong to any pool and should be discarded after having consumed its bytes.
-
setNextIncomingFrames
public void setNextIncomingFrames(IncomingFrames incoming)
Description copied from interface:LogicalConnection
Set where the connection should send the incoming frames to.Often this is from the Parser to the start of the extension stack, and eventually on to the session.
- Specified by:
setNextIncomingFrames
in interfaceLogicalConnection
- Parameters:
incoming
- the incoming frames handler
-
getMessagesIn
public long getMessagesIn()
- Specified by:
getMessagesIn
in interfaceConnection
- Overrides:
getMessagesIn
in classAbstractConnection
- Returns:
- the number of WebSocket frames received over this connection
-
getMessagesOut
public long getMessagesOut()
- Specified by:
getMessagesOut
in interfaceConnection
- Overrides:
getMessagesOut
in classAbstractConnection
- Returns:
- the number of WebSocket frames sent over this connection
-
getBytesIn
public long getBytesIn()
- Specified by:
getBytesIn
in interfaceConnection
- Overrides:
getBytesIn
in classAbstractConnection
- Returns:
- the number of bytes received over this connection
-
getBytesOut
public long getBytesOut()
- Specified by:
getBytesOut
in interfaceConnection
- Overrides:
getBytesOut
in classAbstractConnection
- Returns:
- the number of bytes frames sent over this connection
-
-