- All Superinterfaces:
AutoCloseable
Server broadcaster can be used to manage multiple server sinks
. It enables sending events to all
registered event outputs and provides facility to effectively handle exceptions and closures of individual registered
event outputs.
Instance of this interface is thread safe, meaning that it can be shared and its method invoked from different threads without causing inconsistent internal state.
- Since:
- 2.1
- Author:
- Marek Potociar
-
Method Summary
Modifier and TypeMethodDescriptionbroadcast
(OutboundSseEvent event) Publish an SSE event to all registeredSseEventSink
instances.void
close()
Close the broadcaster and all registeredSseEventSink
instances.void
close
(boolean cascading) Close the broadcaster and release any resources associated with it.void
onClose
(Consumer<SseEventSink> onClose) Register a listener, which will be called when this SseBroadcaster closes a given eventSseEventSink
or tries to write to a givenSseEventSink
that is already closed (either by client closing the connection or by callingSseEventSink.close()
on the server side.void
onError
(BiConsumer<SseEventSink, Throwable> onError) Register a listener, which will be called when an exception is thrown by a givenSseEventSink
when this SseBroadcaster tries to write to it or close it.void
register
(SseEventSink sseEventSink) Register providedSseEventSink
instance to thisSseBroadcaster
.
-
Method Details
-
onError
Register a listener, which will be called when an exception is thrown by a givenSseEventSink
when this SseBroadcaster tries to write to it or close it.This operation is potentially slow, especially if large number of listeners get registered in the broadcaster. The
SseBroadcaster
implementation is optimized to efficiently handle small amounts of concurrent listener registrations and removals and large amounts of registered listener notifications.- Parameters:
onError
- bi-consumer, taking two parameters:SseEventSink
, which is the source of the error and the actualThrowable
instance.
-
onClose
Register a listener, which will be called when this SseBroadcaster closes a given eventSseEventSink
or tries to write to a givenSseEventSink
that is already closed (either by client closing the connection or by callingSseEventSink.close()
on the server side.This operation is potentially slow, especially if large number of listeners get registered in the broadcaster. The
SseBroadcaster
implementation is optimized to efficiently handle small amounts of concurrent listener registrations and removals and large amounts of registered listener notifications.- Parameters:
onClose
- consumer taking single parameter, aSseEventSink
, which was closed.
-
register
Register providedSseEventSink
instance to thisSseBroadcaster
.- Parameters:
sseEventSink
- to be registered.
-
broadcast
Publish an SSE event to all registeredSseEventSink
instances.- Parameters:
event
- SSE event to be published.- Returns:
- completion stage that completes when the event has been broadcast to all registered event sinks.
-
close
void close()Close the broadcaster and all registeredSseEventSink
instances. Any other resources associated with theSseBroadcaster
should be released. This method is equivalent to callingclose(true)
.Subsequent calls have no effect and are ignored. Once the
SseBroadcaster
is closed, invoking any other method on the broadcaster instance would result in anIllegalStateException
being thrown.- Specified by:
close
in interfaceAutoCloseable
-
close
void close(boolean cascading) Close the broadcaster and release any resources associated with it. The closing of registeredSseEventSink
is controlled by thecascading
parameter.Subsequent calls have no effect and are ignored. Once the
SseBroadcaster
is closed, invoking any other method on the broadcaster instance would result in anIllegalStateException
being thrown.- Parameters:
cascading
- Boolean value that controls closing of registeredSseEventSink
instances.
-