Package com.suse.salt.netapi.event
Class WebSocketEventStream
- java.lang.Object
-
- com.suse.salt.netapi.event.AbstractEventStream
-
- com.suse.salt.netapi.event.WebSocketEventStream
-
- All Implemented Interfaces:
EventStream
,AutoCloseable
public class WebSocketEventStream extends AbstractEventStream
Event stream implementation based on aClientEndpoint
WebSocket. It is used to connect the WebSocket to aServerEndpoint
and receive messages from it.
-
-
Constructor Summary
Constructors Constructor Description WebSocketEventStream(URI uri, Token token, long sessionIdleTimeout, long idleTimeout, int maxMsgSize, EventListener... listeners)
Constructor used to create an event stream: open a websocket connection and start event processing.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Closes this Stream; Events will not be posted to listeners after this call.boolean
isEventStreamClosed()
Helper method to check if the stream is able to receive Events.void
onClose(javax.websocket.Session session, javax.websocket.CloseReason closeReason)
On closing the websocket, refresh the session and notify all subscribed listeners.void
onError(Throwable throwable)
On error, convertThrowable
intoCloseReason
and close the session.void
onMessage(String partialMessage, boolean last)
Notify listeners on each event received on the websocket and buffer partial messages.void
onOpen(javax.websocket.Session session, javax.websocket.EndpointConfig config)
On handshake completed, get the WebSocket Session and send a message to ServerEndpoint that WebSocket is ready.-
Methods inherited from class com.suse.salt.netapi.event.AbstractEventStream
addEventListener, clearListeners, getListenerCount, notifyListeners, removeEventListener
-
-
-
-
Constructor Detail
-
WebSocketEventStream
public WebSocketEventStream(URI uri, Token token, long sessionIdleTimeout, long idleTimeout, int maxMsgSize, EventListener... listeners) throws SaltException
Constructor used to create an event stream: open a websocket connection and start event processing.- Parameters:
uri
- salt api urllisteners
- event listeners to be added before stream initializationidleTimeout
- idle timeout to pass to the http client configmaxMsgSize
- maximum event data size to acceptsessionIdleTimeout
- session idle timeout to pass to the http client configtoken
- salt session token to use for authentication- Throws:
SaltException
- in case of an error during stream initialization
-
-
Method Detail
-
isEventStreamClosed
public boolean isEventStreamClosed()
Helper method to check if the stream is able to receive Events.- Returns:
- A flag indicating the Stream state.
-
close
public void close() throws IOException
Closes this Stream; Events will not be posted to listeners after this call.- Throws:
IOException
- in case of an error when closing the session
-
onOpen
public void onOpen(javax.websocket.Session session, javax.websocket.EndpointConfig config) throws IOException
On handshake completed, get the WebSocket Session and send a message to ServerEndpoint that WebSocket is ready. http://docs.saltstack.com/en/latest/ref/netapi/all/salt.netapi.rest_cherrypy.html#ws- Parameters:
session
- The just started WebSocketSession
.config
- TheEndpointConfig
containing the handshake informations.- Throws:
IOException
- if something goes wrong sending message to the remote peer
-
onMessage
public void onMessage(String partialMessage, boolean last) throws MessageTooBigException
Notify listeners on each event received on the websocket and buffer partial messages.- Parameters:
partialMessage
- partial message received on this websocketlast
- indicate the last part of a message- Throws:
MessageTooBigException
- in case the message is longer than maxMessageLength
-
onError
public void onError(Throwable throwable) throws IOException
On error, convertThrowable
intoCloseReason
and close the session.- Parameters:
throwable
- The Throwable object received on the current error.- Throws:
IOException
- in case of an error when closing the session
-
onClose
public void onClose(javax.websocket.Session session, javax.websocket.CloseReason closeReason)
On closing the websocket, refresh the session and notify all subscribed listeners. Upon exit from this method, all subscribed listeners will be removed.- Parameters:
session
- the websocketSession
closeReason
- theCloseReason
for the websocket closure
-
-