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,org.eclipse.jetty.io.Connection,org.eclipse.jetty.io.Connection.UpgradeTo,org.eclipse.jetty.util.component.Dumpable,org.eclipse.jetty.websocket.api.extensions.OutgoingFrames,org.eclipse.jetty.websocket.api.SuspendToken,LogicalConnection
public abstract class AbstractWebSocketConnection extends org.eclipse.jetty.io.AbstractConnection implements LogicalConnection, org.eclipse.jetty.io.Connection.UpgradeTo, org.eclipse.jetty.util.component.Dumpable
Provides the implementation ofLogicalConnectionwithin the framework of the newConnectionframework ofjetty-io.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAbstractWebSocketConnection.Stats
-
Constructor Summary
Constructors Constructor Description AbstractWebSocketConnection(org.eclipse.jetty.io.EndPoint endp, java.util.concurrent.Executor executor, org.eclipse.jetty.util.thread.Scheduler scheduler, org.eclipse.jetty.websocket.api.WebSocketPolicy policy, org.eclipse.jetty.io.ByteBufferPool bufferPool)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancanReadWebSocketFrames()Test if Connection State allows for reading of frames.booleancanWriteWebSocketFrames()Test if Connection State allows for writing frames.voidclose()Jetty Connection Closevoidclose(java.lang.Throwable cause)Close the connection based on the throwablevoidclose(CloseInfo close, org.eclipse.jetty.util.Callback callback)Request a local close.voiddisconnect()Terminate the connection (no close frame sent)voiddump(java.lang.Appendable out, java.lang.String indent)java.lang.StringdumpSelf()voidfillInterested()org.eclipse.jetty.io.ByteBufferPoolgetBufferPool()Get the ByteBufferPool in use by the connectionlonggetBytesIn()longgetBytesOut()java.util.concurrent.ExecutorgetExecutor()Get the Executor used by this connection.java.util.List<org.eclipse.jetty.websocket.api.extensions.ExtensionConfig>getExtensions()Get the list of extensions in use.GeneratorgetGenerator()java.lang.StringgetId()Get Unique ID for the ConnectionlonggetIdleTimeout()Get the read/write idle timeout.longgetMaxIdleTimeout()Set the maximum number of milliseconds of idleness before the connection is closed/disconnected, (ie no frames are either sent or received)longgetMessagesIn()longgetMessagesOut()ParsergetParser()org.eclipse.jetty.websocket.api.WebSocketPolicygetPolicy()The policy that the connection is running under.java.net.InetSocketAddressgetRemoteAddress()Get the remote Address in use for this connection.org.eclipse.jetty.util.thread.SchedulergetScheduler()AbstractWebSocketConnection.StatsgetStats()booleanisOpen()Test if logical connection is still openbooleanisReading()Tests if the connection is actively reading.voidonFillable()protected voidonFillInterestedFailed(java.lang.Throwable cause)booleanonIdleExpired()protected booleanonReadTimeout(java.lang.Throwable timeout)Event for no activity on connection (read or write)voidonUpgradeTo(java.nio.ByteBuffer prefilled)Extra bytes from the initial HTTP upgrade that need to be processed by the websocket parser before starting to read bytes from the connectionbooleanopened()Set the state to opened (the application onOpen() method has been called successfully).booleanopening()Set the state to upgrade/opening handshake has completed.voidoutgoingFrame(org.eclipse.jetty.websocket.api.extensions.Frame frame, org.eclipse.jetty.websocket.api.WriteCallback callback, org.eclipse.jetty.websocket.api.BatchMode batchMode)Frame from API, User, or Internal implementation destined for network.voidremoteClose(CloseInfo close)Report that the Remote Endpoint CLOSE Frame has been receivedvoidresume()voidsetExtensions(java.util.List<org.eclipse.jetty.websocket.api.extensions.ExtensionConfig> extensions)Get the list of extensions in use.protected voidsetInitialBuffer(java.nio.ByteBuffer prefilled)Extra bytes from the initial HTTP upgrade that need to be processed by the websocket parser before starting to read bytes from the connectionvoidsetInputBufferSize(int inputBufferSize)voidsetMaxIdleTimeout(long ms)Set the maximum number of milliseconds of idleness before the connection is closed/disconnected, (ie no frames are either sent or received)voidsetSession(WebSocketSession session)Associate the Active Session with the connection.org.eclipse.jetty.websocket.api.SuspendTokensuspend()Suspend a the incoming read events on the connection.java.lang.StringtoConnectionString()java.lang.StringtoStateString()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
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.jetty.websocket.common.LogicalConnection
getLocalAddress, setNextIncomingFrames
-
-
-
-
Constructor Detail
-
AbstractWebSocketConnection
public AbstractWebSocketConnection(org.eclipse.jetty.io.EndPoint endp, java.util.concurrent.Executor executor, org.eclipse.jetty.util.thread.Scheduler scheduler, org.eclipse.jetty.websocket.api.WebSocketPolicy policy, org.eclipse.jetty.io.ByteBufferPool bufferPool)
-
-
Method Detail
-
getExecutor
public java.util.concurrent.Executor getExecutor()
Description copied from interface:LogicalConnectionGet the Executor used by this connection.- Specified by:
getExecutorin interfaceLogicalConnection- Overrides:
getExecutorin classorg.eclipse.jetty.io.AbstractConnection- Returns:
- the executor
-
close
public void close(CloseInfo close, org.eclipse.jetty.util.Callback callback)
Description copied from interface:LogicalConnectionRequest a local close.- Specified by:
closein interfaceLogicalConnection
-
close
public void close(java.lang.Throwable cause)
Close the connection based on the throwable- Specified by:
closein interfaceLogicalConnection- Parameters:
cause- the cause
-
canWriteWebSocketFrames
public boolean canWriteWebSocketFrames()
Description copied from interface:LogicalConnectionTest if Connection State allows for writing frames.- Specified by:
canWriteWebSocketFramesin interfaceLogicalConnection- Returns:
- true if able to write, false otherwise.
-
canReadWebSocketFrames
public boolean canReadWebSocketFrames()
Description copied from interface:LogicalConnectionTest if Connection State allows for reading of frames.- Specified by:
canReadWebSocketFramesin interfaceLogicalConnection- Returns:
- true if able to read, false otherwise.
-
toStateString
public java.lang.String toStateString()
Description copied from interface:LogicalConnectionGet the Connection State as a String- Specified by:
toStateStringin interfaceLogicalConnection- Returns:
- the Connection State string
-
opening
public boolean opening()
Description copied from interface:LogicalConnectionSet the state to upgrade/opening handshake has completed.- Specified by:
openingin interfaceLogicalConnection- Returns:
- true if state is OPENING, false otherwise
-
opened
public boolean opened()
Description copied from interface:LogicalConnectionSet the state to opened (the application onOpen() method has been called successfully).Reads from network begin here.
- Specified by:
openedin interfaceLogicalConnection- Returns:
- true if state is OPENED, false otherwise
-
remoteClose
public void remoteClose(CloseInfo close)
Description copied from interface:LogicalConnectionReport that the Remote Endpoint CLOSE Frame has been received- Specified by:
remoteClosein interfaceLogicalConnection- Parameters:
close- the close frame details
-
setSession
public void setSession(WebSocketSession session)
Description copied from interface:LogicalConnectionAssociate the Active Session with the connection.- Specified by:
setSessionin interfaceLogicalConnection- Parameters:
session- the session for this connection
-
onIdleExpired
public boolean onIdleExpired()
- Specified by:
onIdleExpiredin interfaceorg.eclipse.jetty.io.Connection- Overrides:
onIdleExpiredin classorg.eclipse.jetty.io.AbstractConnection
-
close
public void close()
Jetty Connection Close- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Specified by:
closein interfaceorg.eclipse.jetty.io.Connection- Overrides:
closein classorg.eclipse.jetty.io.AbstractConnection
-
disconnect
public void disconnect()
Description copied from interface:LogicalConnectionTerminate the connection (no close frame sent)- Specified by:
disconnectin interfaceLogicalConnection
-
fillInterested
public void fillInterested()
- Overrides:
fillInterestedin classorg.eclipse.jetty.io.AbstractConnection
-
getBufferPool
public org.eclipse.jetty.io.ByteBufferPool getBufferPool()
Description copied from interface:LogicalConnectionGet the ByteBufferPool in use by the connection- Specified by:
getBufferPoolin interfaceLogicalConnection- Returns:
- the buffer pool
-
getExtensions
public java.util.List<org.eclipse.jetty.websocket.api.extensions.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:LogicalConnectionGet Unique ID for the Connection- Specified by:
getIdin interfaceLogicalConnection- Returns:
- the unique ID for the connection
-
getIdleTimeout
public long getIdleTimeout()
Description copied from interface:LogicalConnectionGet the read/write idle timeout.- Specified by:
getIdleTimeoutin interfaceLogicalConnection- Returns:
- the idle timeout in milliseconds
-
getMaxIdleTimeout
public long getMaxIdleTimeout()
Description copied from interface:LogicalConnectionSet the maximum number of milliseconds of idleness before the connection is closed/disconnected, (ie no frames are either sent or received)- Specified by:
getMaxIdleTimeoutin interfaceLogicalConnection- Returns:
- the idle timeout in milliseconds
-
getParser
public Parser getParser()
-
getPolicy
public org.eclipse.jetty.websocket.api.WebSocketPolicy getPolicy()
Description copied from interface:LogicalConnectionThe policy that the connection is running under.- Specified by:
getPolicyin interfaceLogicalConnection- Returns:
- the policy for the connection
-
getRemoteAddress
public java.net.InetSocketAddress getRemoteAddress()
Description copied from interface:LogicalConnectionGet 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:
getRemoteAddressin interfaceLogicalConnection- Returns:
- the remote address.
-
getScheduler
public org.eclipse.jetty.util.thread.Scheduler getScheduler()
-
getStats
public AbstractWebSocketConnection.Stats getStats()
-
isOpen
public boolean isOpen()
Description copied from interface:LogicalConnectionTest if logical connection is still open- Specified by:
isOpenin interfaceLogicalConnection- Returns:
- true if connection is open
-
isReading
public boolean isReading()
Description copied from interface:LogicalConnectionTests if the connection is actively reading.- Specified by:
isReadingin interfaceLogicalConnection- Returns:
- true if connection is actively attempting to read.
-
onFillable
public void onFillable()
- Specified by:
onFillablein classorg.eclipse.jetty.io.AbstractConnection
-
onFillInterestedFailed
protected void onFillInterestedFailed(java.lang.Throwable cause)
- Overrides:
onFillInterestedFailedin classorg.eclipse.jetty.io.AbstractConnection
-
setInitialBuffer
protected void setInitialBuffer(java.nio.ByteBuffer prefilled)
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:
prefilled- the bytes of prefilled content encountered during upgrade
-
onReadTimeout
protected boolean onReadTimeout(java.lang.Throwable timeout)
Event for no activity on connection (read or write)- Overrides:
onReadTimeoutin classorg.eclipse.jetty.io.AbstractConnection- Returns:
- true to signal that the endpoint must be closed, false to keep the endpoint open
-
outgoingFrame
public void outgoingFrame(org.eclipse.jetty.websocket.api.extensions.Frame frame, org.eclipse.jetty.websocket.api.WriteCallback callback, org.eclipse.jetty.websocket.api.BatchMode batchMode)Frame from API, User, or Internal implementation destined for network.- Specified by:
outgoingFramein interfaceorg.eclipse.jetty.websocket.api.extensions.OutgoingFrames
-
resume
public void resume()
- Specified by:
resumein interfaceorg.eclipse.jetty.websocket.api.SuspendToken
-
suspend
public org.eclipse.jetty.websocket.api.SuspendToken suspend()
Description copied from interface:LogicalConnectionSuspend a the incoming read events on the connection.- Specified by:
suspendin interfaceLogicalConnection- Returns:
- the suspend token
-
setExtensions
public void setExtensions(java.util.List<org.eclipse.jetty.websocket.api.extensions.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:
setInputBufferSizein classorg.eclipse.jetty.io.AbstractConnection
-
setMaxIdleTimeout
public void setMaxIdleTimeout(long ms)
Description copied from interface:LogicalConnectionSet 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:
setMaxIdleTimeoutin interfaceLogicalConnection- Parameters:
ms- the number of milliseconds of idle timeout
-
dumpSelf
public java.lang.String dumpSelf()
- Specified by:
dumpSelfin interfaceorg.eclipse.jetty.util.component.Dumpable
-
dump
public void dump(java.lang.Appendable out, java.lang.String indent) throws java.io.IOException- Specified by:
dumpin interfaceorg.eclipse.jetty.util.component.Dumpable- Throws:
java.io.IOException
-
toConnectionString
public java.lang.String toConnectionString()
- Overrides:
toConnectionStringin classorg.eclipse.jetty.io.AbstractConnection
-
onUpgradeTo
public void onUpgradeTo(java.nio.ByteBuffer prefilled)
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:
onUpgradeToin interfaceorg.eclipse.jetty.io.Connection.UpgradeTo
-
getMessagesIn
public long getMessagesIn()
- Specified by:
getMessagesInin interfaceorg.eclipse.jetty.io.Connection- Overrides:
getMessagesInin classorg.eclipse.jetty.io.AbstractConnection- Returns:
- the number of WebSocket frames received over this connection
-
getMessagesOut
public long getMessagesOut()
- Specified by:
getMessagesOutin interfaceorg.eclipse.jetty.io.Connection- Overrides:
getMessagesOutin classorg.eclipse.jetty.io.AbstractConnection- Returns:
- the number of WebSocket frames sent over this connection
-
getBytesIn
public long getBytesIn()
- Specified by:
getBytesInin interfaceorg.eclipse.jetty.io.Connection- Overrides:
getBytesInin classorg.eclipse.jetty.io.AbstractConnection- Returns:
- the number of bytes received over this connection
-
getBytesOut
public long getBytesOut()
- Specified by:
getBytesOutin interfaceorg.eclipse.jetty.io.Connection- Overrides:
getBytesOutin classorg.eclipse.jetty.io.AbstractConnection- Returns:
- the number of bytes frames sent over this connection
-
-