Class Broadcaster<T>

java.lang.Object
org.glassfish.jersey.server.Broadcaster<T>
Type Parameters:
T - broadcast type.
All Implemented Interfaces:
BroadcasterListener<T>
Direct Known Subclasses:
SseBroadcaster

public class Broadcaster<T> extends Object implements BroadcasterListener<T>
Used for broadcasting response chunks to multiple ChunkedOutput instances.
Author:
Pavel Bucek, Martin Matula
  • Constructor Details

    • Broadcaster

      public Broadcaster()
      Creates a new instance. If this constructor is called by a subclass, it assumes the the reason for the subclass to exist is to implement onClose(ChunkedOutput) and onException(ChunkedOutput, Exception) methods, so it adds the newly created instance as the listener. To avoid this, subclasses may call Broadcaster(Class) passing their class as an argument.
    • Broadcaster

      protected Broadcaster(Class<? extends Broadcaster> subclass)
      Can be used by subclasses to override the default functionality of adding self to the set of listeners. If creating a direct instance of a subclass passed in the parameter, the broadcaster will not register itself as a listener.
      Parameters:
      subclass - subclass of Broadcaster that should not be registered as a listener - if creating a direct instance of this subclass, this constructor will not register the new instance as a listener.
      See Also:
  • Method Details

    • add

      public <OUT extends ChunkedOutput<T>> boolean add(OUT chunkedOutput)
      Register ChunkedOutput to this Broadcaster instance.
      Parameters:
      chunkedOutput - ChunkedOutput to register.
      Returns:
      true if the instance was successfully registered, false otherwise.
    • remove

      public <OUT extends ChunkedOutput<T>> boolean remove(OUT chunkedOutput)
      Un-register ChunkedOutput from this Broadcaster instance. This method does not close the ChunkedOutput being unregistered.
      Parameters:
      chunkedOutput - ChunkedOutput instance to un-register from this broadcaster.
      Returns:
      true if the instance was unregistered, false otherwise.
    • add

      public boolean add(BroadcasterListener<T> listener)
      Register BroadcasterListener for Broadcaster events listening.

      This operation is potentially slow, especially if large number of listeners get registered in the broadcaster. The Broadcaster implementation is optimized to efficiently handle small amounts of concurrent listener registrations and removals and large amounts of registered listener notifications.

      Parameters:
      listener - listener to be registered.
      Returns:
      true if registered, false otherwise.
    • remove

      public boolean remove(BroadcasterListener<T> listener)
      Un-register BroadcasterListener.

      This operation is potentially slow, especially if large number of listeners get registered in the broadcaster. The Broadcaster implementation is optimized to efficiently handle small amounts of concurrent listener registrations and removals and large amounts of registered listener notifications.

      Parameters:
      listener - listener to be unregistered.
      Returns:
      true if unregistered, false otherwise.
    • broadcast

      public void broadcast(T chunk)
      Broadcast a chunk to all registered ChunkedOutput instances.
      Parameters:
      chunk - chunk to be sent.
    • closeAll

      public void closeAll()
      Close all registered ChunkedOutput instances.
    • onException

      public void onException(ChunkedOutput<T> chunkedOutput, Exception exception)
      Called when exception was thrown by a given chunked response when trying to write to it or close it. Can be implemented by subclasses to handle the event of exception thrown from a particular ChunkedOutput instance when trying to write to it or close it.
      Specified by:
      onException in interface BroadcasterListener<T>
      Parameters:
      chunkedOutput - instance that threw exception.
      exception - exception that was thrown.
    • onClose

      public void onClose(ChunkedOutput<T> chunkedOutput)
      Called when the chunkedOutput has been closed (either by client closing the connection or by calling ChunkedOutput.close() on the server side. Can be implemented by subclasses to handle the event of ChunkedOutput being closed.
      Specified by:
      onClose in interface BroadcasterListener<T>
      Parameters:
      chunkedOutput - instance that was closed.