org.atmosphere.cpr
Interface Broadcaster

All Known Implementing Classes:
DefaultBroadcaster, GAEDefaultBroadcaster, SimpleBroadcaster

public interface Broadcaster

A Broadcaster is responsible for delivering messages to its subscribed AtmosphereResource, which are representing a suspended response. AtmosphereResource can be added using addAtmosphereResource(org.atmosphere.cpr.AtmosphereResource), so when broadcast(java.lang.Object) execute, AtmosphereHandler.onStateChange(org.atmosphere.cpr.AtmosphereResourceEvent) will be invoked and the suspended connection will have a chance to write the message available using AtmosphereResourceEvent.getMessage()
A Broadcaster, by default, will use an ExecutorService, and the number of Thread will be computed based on the core/cpu of the OS under which the application run. Thus invoking broadcast(Object) will be executed asynchronously so this is important to wait for the Future.get() to awake/unblock to be garantee the operation has completed.
One final word on Broadcaster: by default, a Broadcaster will broadcast using all AtmosphereResource on which the response has been suspended, e.g. {AtmosphereResource#suspend()} has been invoked. This behavior is configurable and you can configure it by invoking the setScope(org.atmosphere.cpr.Broadcaster.SCOPE) ):

Author:
Jeanfrancois Arcand

Nested Class Summary
static class Broadcaster.POLICY
           
static class Broadcaster.SCOPE
           
 
Method Summary
 AtmosphereResource<?,?> addAtmosphereResource(AtmosphereResource<?,?> resource)
          Add a AtmosphereResource to the list of item to be notified when the broadcast(java.lang.Object) is invoked.
 Future<Object> broadcast(Object o)
          Broadcast the Object to all suspended response, e.g.
 Future<Object> broadcast(Object o, AtmosphereResource<?,?> resource)
          Broadcast the Object to all suspended response, e.g.
 Future<Object> broadcast(Object o, Set<AtmosphereResource<?,?>> subset)
          Broadcast the Object to all suspended response, e.g.
 Future<Object> delayBroadcast(Object o)
          Delay the broadcast operation.
 Future<Object> delayBroadcast(Object o, long delay, TimeUnit t)
          Delay the broadcast operation.
 void destroy()
          Destroy this instance and shutdown it's associated ExecutorService
 Collection<AtmosphereResource<?,?>> getAtmosphereResources()
          Return an List of AtmosphereResource.
 BroadcasterConfig getBroadcasterConfig()
          Return the current BroadcasterConfig
 String getID()
          Return the id of this Broadcaster
 Broadcaster.SCOPE getScope()
          Return the Broadcaster.SCOPE
 AtmosphereResource<?,?> removeAtmosphereResource(AtmosphereResource<?,?> resource)
          Remove a AtmosphereResource from the list of item to be notified when the broadcast(java.lang.Object) is invoked.
 void resumeAll()
          Resume all suspended responses (AtmosphereResource) added via addAtmosphereResource(org.atmosphere.cpr.AtmosphereResource).
 Future<?> scheduleFixedBroadcast(Object o, long waitFor, long period, TimeUnit t)
          Broadcast periodically.
 Future<?> scheduleFixedBroadcast(Object o, long period, TimeUnit t)
          Broadcast periodically.
 void setBroadcasterConfig(BroadcasterConfig bc)
          Set the BroadcasterConfig instance.
 void setID(String name)
          Set the id of this Broadcaster
 void setScope(Broadcaster.SCOPE scope)
          Set the scope.
 void setSuspendPolicy(long maxSuspended, Broadcaster.POLICY policy)
          Set the maximum number of suspended AtmosphereResource.
 

Method Detail

setSuspendPolicy

void setSuspendPolicy(long maxSuspended,
                      Broadcaster.POLICY policy)
Set the maximum number of suspended AtmosphereResource. If the max is reached, Atmosphere will either resume AtmosphereResource using Broadcaster.POLICY.FIFO (first in first out) or Broadcaster.POLICY.REJECT the AtmosphereResource. By default the number is uunlimited.

Parameters:
maxSuspended - max suspended

broadcast

Future<Object> broadcast(Object o)
Broadcast the Object to all suspended response, e.g. invoke AtmosphereHandler.onStateChange(org.atmosphere.cpr.AtmosphereResourceEvent).

Parameters:
o - and Object to be broadcasted.
Returns:
a Future that can be used to synchronize using the Future.get()

delayBroadcast

Future<Object> delayBroadcast(Object o)
Delay the broadcast operation. The Object will be broadcasted when the first broadcast(java.lang.Object) is invoked.

Parameters:
o - and Object to be broadcasted.
Returns:
a Future that can be used to synchronize using the Future.get()

delayBroadcast

Future<Object> delayBroadcast(Object o,
                              long delay,
                              TimeUnit t)
Delay the broadcast operation. The Object will be broadcasted once the specified delay expires or when the first broadcast(java.lang.Object)

Parameters:
o - and Object to be broadcasted.
delay - Amount of time to delay.
t - a TimeUnit of delay.
Returns:
a Future that can be used to synchronize using the Future.get()

scheduleFixedBroadcast

Future<?> scheduleFixedBroadcast(Object o,
                                 long period,
                                 TimeUnit t)
Broadcast periodically. The Object will be broadcasted after every period specified time frame expires. If the TimeUnit is set null, the Object will be broadcasted when the first broadcast(java.lang.Object) is invoked.

Parameters:
o - and Object to be broadcasted.
period - Every so often broadcast.
t - a TimeUnit of period.
Returns:
a Future that can be used to synchronize using the Future.get()

scheduleFixedBroadcast

Future<?> scheduleFixedBroadcast(Object o,
                                 long waitFor,
                                 long period,
                                 TimeUnit t)
Broadcast periodically. The Object will be broadcasted after every period specified time frame expires. If the TimeUnit is set null, the Object will be broadcasted when the first broadcast(java.lang.Object) * is invoked.

Parameters:
o - and Object to be broadcasted.
waitFor - Wait for that long before first broadcast.
period - The period inbetween broadcast.
t - a TimeUnit of waitFor and period.
Returns:
a Future that can be used to synchronize using the Future.get()

broadcast

Future<Object> broadcast(Object o,
                         AtmosphereResource<?,?> resource)
Broadcast the Object to all suspended response, e.g. invoke AtmosphereHandler.onStateChange(org.atmosphere.cpr.AtmosphereResourceEvent) with an instance of AtmosphereResource, representing a single suspended response..

Parameters:
o - and Object to be broadcasted.
resource - an AtmosphereResource
Returns:
a Future that can be used to synchronize using the Future.get()

broadcast

Future<Object> broadcast(Object o,
                         Set<AtmosphereResource<?,?>> subset)
Broadcast the Object to all suspended response, e.g. invoke AtmosphereHandler.onStateChange(org.atmosphere.cpr.AtmosphereResourceEvent) with a Set of AtmosphereResource, representing a set of AtmosphereHandler.

Parameters:
o - and Object to be broadcasted.
subset - a Set of AtmosphereResource
Returns:
a Future that can be used to synchronize using the Future.get()

addAtmosphereResource

AtmosphereResource<?,?> addAtmosphereResource(AtmosphereResource<?,?> resource)
Add a AtmosphereResource to the list of item to be notified when the broadcast(java.lang.Object) is invoked.

Parameters:
resource - an AtmosphereResource
Returns:
AtmosphereResource if added, or null if it was already there.

removeAtmosphereResource

AtmosphereResource<?,?> removeAtmosphereResource(AtmosphereResource<?,?> resource)
Remove a AtmosphereResource from the list of item to be notified when the broadcast(java.lang.Object) is invoked.

Parameters:
resource - an AtmosphereResource
Returns:
AtmosphereResource if removed, or null if it was not.

setBroadcasterConfig

void setBroadcasterConfig(BroadcasterConfig bc)
Set the BroadcasterConfig instance.

Parameters:
bc - Configuration to be set.

getBroadcasterConfig

BroadcasterConfig getBroadcasterConfig()
Return the current BroadcasterConfig

Returns:
the current BroadcasterConfig

destroy

void destroy()
Destroy this instance and shutdown it's associated ExecutorService


getAtmosphereResources

Collection<AtmosphereResource<?,?>> getAtmosphereResources()
Return an List of AtmosphereResource.

Returns:
List of AtmosphereResource associated with this Broadcaster.
See Also:
addAtmosphereResource(AtmosphereResource)

setScope

void setScope(Broadcaster.SCOPE scope)
Set the scope.

Parameters:
scope - Broadcaster.SCOPE to set.

getScope

Broadcaster.SCOPE getScope()
Return the Broadcaster.SCOPE

Returns:
Broadcaster.SCOPE of Broadcaster.

setID

void setID(String name)
Set the id of this Broadcaster

Parameters:
name - ID of this Broadcaster

getID

String getID()
Return the id of this Broadcaster

Returns:
the id of this Broadcaster

resumeAll

void resumeAll()
Resume all suspended responses (AtmosphereResource) added via addAtmosphereResource(org.atmosphere.cpr.AtmosphereResource).



Copyright © 2011. All Rights Reserved.