public class SpincastWebsocketEndpoint extends Object implements IWebsocketEndpoint
| Modifier and Type | Field and Description |
|---|---|
static String |
EXCHANGE_VARIABLE_PEER_ID |
protected org.slf4j.Logger |
logger |
| Constructor and Description |
|---|
SpincastWebsocketEndpoint(String endpointId,
IWebsocketEndpointHandler eventsHandler,
IUndertowWebsocketEndpointWriterFactory undertowWebsocketEndpointWriterFactory,
ISpincastUndertowConfig spincastUndertowConfig,
ISpincastUndertowUtils spincastUndertowUtils)
Constructor
|
| Modifier and Type | Method and Description |
|---|---|
void |
closeEndpoint()
Closes the entire WebSocket endpoint.
|
void |
closeEndpoint(boolean sendClosingMessageToPeers)
Closes the entire WebSocket endpoint.
|
void |
closeEndpoint(int closingCode,
String closingReason)
Closes the entire WebSocket endpoint.
|
protected void |
closeEndpoint(int closingCode,
String closingReason,
boolean sendClosingMessageToPeers) |
void |
closePeer(String peerId)
Closes a specific peer connection on the endpoint.
|
void |
closePeer(String peerId,
int closingCode,
String closingReason)
Closes a specific peer connection on the endpoint.
|
String |
getEndpointId()
The endpoint id
|
protected IWebsocketEndpointHandler |
getEventsHandler() |
protected Object |
getNewPeerIdLock(String peerId)
Gets the creation lock for a peer id.
|
Set<String> |
getPeersIds()
The connected peers' ids.
|
protected ISpincastUndertowConfig |
getSpincastUndertowConfig() |
protected ISpincastUndertowUtils |
getSpincastUndertowUtils() |
protected ExecutorService |
getThreadExecutorForAppEvents()
The ExecutorService to use to
send events to the application.
|
protected int |
getThreadExecutorForAppEventsThreadNumber()
The maximum number of concurrent threads used when
sending events to the application.
|
protected ThreadFactory |
getThreadExecutorForAppEventsThreadThreadFactory()
The ThreadFactory to use for the Executor that
sends events to the application.
|
protected int |
getThreadExecutorForAppEventsTimeoutAmount()
The timeout amount before cancelling a task when
sending events to the application.
|
protected TimeUnit |
getThreadExecutorForAppEventsTimeoutTimeUnit()
The timeout unit before cancelling a task when
sending events to the application.
|
protected IUndertowWebsocketEndpointWriterFactory |
getUndertowWebsocketEndpointWriterFactory() |
protected IUndertowWebsocketEndpointWriter |
getUndertowWebsocketWriter() |
protected Map<String,io.undertow.websockets.core.WebSocketChannel> |
getWebSocketChannelByPeerId() |
protected io.undertow.websockets.WebSocketProtocolHandshakeHandler |
getWebSocketProtocolHandshakeHandler()
The handler to use for the Websocket connection.
|
void |
handleConnectionRequest(io.undertow.server.HttpServerExchange exchange,
String peerId) |
protected void |
init() |
boolean |
isClosed()
Is this endpoint closed?
|
boolean |
isClosing()
Is this endpoint closing?
|
protected void |
managePeersWriteConnectionClosed(Set<String> peerIds)
Called when a write operation detected a closed connection
on some peers.
|
protected void |
removePeerChannel(String peerId) |
protected void |
removePeerChannelAndSendPeerClosedAppEvent(String peerId) |
protected void |
sendAppEventInNewThread(Runnable runnable)
Sends an event to the application in a separated thread.
|
void |
sendMessage(byte[] message)
Sends a byte array message to all
peers of the endpoint.
|
void |
sendMessage(Set<String> peerIds,
byte[] message)
Sends a byte array message to specific
peers.
|
void |
sendMessage(Set<String> peerIds,
String message)
Sends a String message to specific
peers.
|
void |
sendMessage(String message)
Sends a String message to all
peers of the endpoint.
|
void |
sendMessage(String peerId,
byte[] message)
Sends a byte array message to a specific
peer.
|
void |
sendMessage(String peerId,
String message)
Sends a String message to a specific
peer.
|
void |
sendMessageExcept(Set<String> peerIdsToRemove,
byte[] message)
Sends a byte array message to all
peers except the specified ones.
|
void |
sendMessageExcept(Set<String> peerIdsToRemove,
String message)
Sends a String message to all
peers except the specified ones.
|
void |
sendMessageExcept(String peerId,
byte[] message)
Sends a byte array message to all
peers except the specified one.
|
void |
sendMessageExcept(String peerId,
String message)
Sends a String message to all
peers except the specified one.
|
protected void |
sendOnBytesMessageAppEvent(String peerId,
byte[] message)
Sends a "byte[] message" event to the app.
|
protected void |
sendOnPeerConnectedAppEvent(String peerId)
Sends a "Peer connected " event to the app.
|
protected void |
sendOnStringMessageAppEvent(String peerId,
String message)
Sends a "String message" event to the app.
|
protected void |
sendPeerClosedAppEvent(String peerId)
Sends a "peer closed" event to the app.
|
protected void |
startSendingPings()
Starts sending automatic pings to the peers.
|
protected void |
stopSendingPings() |
protected void |
validateWebsocketClosingCode(int closingCode)
Is the Websocket closing code valid?
|
protected final org.slf4j.Logger logger
public static final String EXCHANGE_VARIABLE_PEER_ID
public SpincastWebsocketEndpoint(String endpointId, IWebsocketEndpointHandler eventsHandler, IUndertowWebsocketEndpointWriterFactory undertowWebsocketEndpointWriterFactory, ISpincastUndertowConfig spincastUndertowConfig, ISpincastUndertowUtils spincastUndertowUtils)
@Inject protected void init()
protected Map<String,io.undertow.websockets.core.WebSocketChannel> getWebSocketChannelByPeerId()
protected IWebsocketEndpointHandler getEventsHandler()
protected IUndertowWebsocketEndpointWriterFactory getUndertowWebsocketEndpointWriterFactory()
protected ISpincastUndertowConfig getSpincastUndertowConfig()
protected ISpincastUndertowUtils getSpincastUndertowUtils()
protected IUndertowWebsocketEndpointWriter getUndertowWebsocketWriter()
protected Object getNewPeerIdLock(String peerId)
public String getEndpointId()
IWebsocketEndpointManagergetEndpointId in interface IWebsocketEndpointManagerpublic Set<String> getPeersIds()
IWebsocketEndpointManagergetPeersIds in interface IWebsocketEndpointManagerpublic void closePeer(String peerId)
IWebsocketEndpointManagerclosePeer in interface IWebsocketEndpointManagerpublic void closePeer(String peerId, int closingCode, String closingReason)
IWebsocketEndpointManagerclosePeer in interface IWebsocketEndpointManagerprotected void removePeerChannelAndSendPeerClosedAppEvent(String peerId)
protected void removePeerChannel(String peerId)
protected void managePeersWriteConnectionClosed(Set<String> peerIds)
public boolean isClosing()
IWebsocketEndpointManagerisClosing in interface IWebsocketEndpointManagerpublic boolean isClosed()
IWebsocketEndpointManagerisClosed in interface IWebsocketEndpointManagerpublic void closeEndpoint()
IWebsocketEndpointManagerWill try to send a "closing" message to the peers before closing their connection.
closeEndpoint in interface IWebsocketEndpointManagerpublic void closeEndpoint(boolean sendClosingMessageToPeers)
IWebsocketEndpointManagercloseEndpoint in interface IWebsocketEndpointManagersendClosingMessageToPeers - if true,
Spincast will try to send a "closing" message to the peers
before closing their connections.public void closeEndpoint(int closingCode,
String closingReason)
IWebsocketEndpointManagerWill try to send a "closing" message to the peers before closing their connection.
closeEndpoint in interface IWebsocketEndpointManagerprotected void closeEndpoint(int closingCode,
String closingReason,
boolean sendClosingMessageToPeers)
protected void validateWebsocketClosingCode(int closingCode)
an - expcetion is the code is not valid.protected void startSendingPings()
protected void stopSendingPings()
public void sendMessage(String message)
IWebsocketEndpointWritersendMessage in interface IWebsocketEndpointWriterpublic void sendMessage(String peerId, String message)
IWebsocketEndpointWritersendMessage in interface IWebsocketEndpointWriterpublic void sendMessageExcept(String peerId, String message)
IWebsocketEndpointWritersendMessageExcept in interface IWebsocketEndpointWriterpublic void sendMessageExcept(Set<String> peerIdsToRemove, String message)
IWebsocketEndpointWritersendMessageExcept in interface IWebsocketEndpointWriterpublic void sendMessage(Set<String> peerIds, String message)
IWebsocketEndpointWritersendMessage in interface IWebsocketEndpointWriterpublic void sendMessage(byte[] message)
IWebsocketEndpointWritersendMessage in interface IWebsocketEndpointWriterpublic void sendMessage(String peerId, byte[] message)
IWebsocketEndpointWritersendMessage in interface IWebsocketEndpointWriterpublic void sendMessageExcept(String peerId, byte[] message)
IWebsocketEndpointWritersendMessageExcept in interface IWebsocketEndpointWriterpublic void sendMessageExcept(Set<String> peerIdsToRemove, byte[] message)
IWebsocketEndpointWritersendMessageExcept in interface IWebsocketEndpointWriterpublic void sendMessage(Set<String> peerIds, byte[] message)
IWebsocketEndpointWritersendMessage in interface IWebsocketEndpointWriterpublic void handleConnectionRequest(io.undertow.server.HttpServerExchange exchange,
String peerId)
handleConnectionRequest in interface IWebsocketEndpointprotected io.undertow.websockets.WebSocketProtocolHandshakeHandler getWebSocketProtocolHandshakeHandler()
protected void sendOnPeerConnectedAppEvent(String peerId)
protected void sendOnStringMessageAppEvent(String peerId, String message)
protected void sendOnBytesMessageAppEvent(String peerId, byte[] message)
protected void sendPeerClosedAppEvent(String peerId)
protected void sendAppEventInNewThread(Runnable runnable)
protected int getThreadExecutorForAppEventsTimeoutAmount()
protected TimeUnit getThreadExecutorForAppEventsTimeoutTimeUnit()
protected ExecutorService getThreadExecutorForAppEvents()
protected int getThreadExecutorForAppEventsThreadNumber()
protected ThreadFactory getThreadExecutorForAppEventsThreadThreadFactory()
null
to use the default one.Copyright © 2016. All rights reserved.