Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class BroadcasterManagerImpl implements BroadcasterManager {
- private final ConcurrentMap<String,Broadcaster> BROADCASTERS;
- private final Logger logger = LoggerFactory.getLogger(getClass());
- public BroadcasterManagerImpl (int size) {
- if (size < 1)
- throw new IllegalArgumentException ("The size of the broadcaster list must be " +
- "greater than 0.");
- this.BROADCASTERS = new ConcurrentHashMap<String,Broadcaster>(size);
- logger.debug("Broadcaster map initialized. Initial capacity: " + size);
- }
- /* (non-Javadoc)
- * @see org.atmosphere.samples.server.BroadcasterStorage#add(java.lang.String, org.atmosphere.cpr.Broadcaster)
- */
- @Override
- public void add (String id, Broadcaster broadcaster) {
- if (id == null)
- throw new IllegalArgumentException ("The id of the broadcaster to add cannot be null.");
- if (broadcaster == null)
- throw new IllegalArgumentException ("The broadcaster to add cannot be null.");
- this.BROADCASTERS.put(id, broadcaster);
- logger.debug("Added mapping: " + id + " - b'" + broadcaster.getID() + "'s" +
- broadcaster.getAtmosphereResources().size());
- }
- /* (non-Javadoc)
- * @see org.atmosphere.samples.server.BroadcasterStorage#remove(java.lang.String)
- */
- @Override
- public void remove (String id) {
- if (id == null)
- throw new IllegalArgumentException ("The id of the broadcaster to remove cannot be null.");
- Broadcaster broadcaster = this.BROADCASTERS.get(id);
- this.removeBroadcaster(broadcaster, id);
- }
- private void removeBroadcaster (Broadcaster broadcaster, String id) {
- if (broadcaster == null)
- logger.debug("No broadcaster for: " + id);
- else {
- //check if there are atmosphere resources for the broadcaster to remove
- if (broadcaster.getAtmosphereResources().size() == 0) {
- broadcaster.destroy();
- BROADCASTERS.remove(id);
- logger.debug("Removed mapping: " + id + " - b'" + broadcaster.getID() + "'");
- } else
- logger.debug("NOT Removed mapping: " + id + " - b'" + broadcaster.getID() + "'s" +
- broadcaster.getAtmosphereResources().size());
- //add a JMS Subscription Event (STOP) - the id is also the domain name
- JMSSubscriptionEventQueue.addEvent(new JMSSubscriptionEvent(Type.STOP,id));
- }
- }
- /* (non-Javadoc)
- * @see org.atmosphere.samples.server.BroadcasterStorage#get(java.lang.String)
- */
- @Override
- public Broadcaster get (String id) {
- if (id == null)
- throw new IllegalArgumentException ("The id of the broadcaster to retrieve cannot be null.");
- Broadcaster broadcaster = this.BROADCASTERS.get(id);
- logger.debug("Get mapping: " + id + " - b'" + (broadcaster == null ? "null" :
- broadcaster.getID() + "'s" + broadcaster.getAtmosphereResources().size()));
- return broadcaster;
- }
- /* (non-Javadoc)
- * @see org.atmosphere.samples.server.BroadcasterStorage#getAll()
- */
- @Override
- public Collection<Broadcaster> getAll () {
- return this.BROADCASTERS.values();
- }
- @Override
- public String removeResource(AtmosphereResource<?,?> resource) {
- Iterator<String> i = this.BROADCASTERS.keySet().iterator();
- Broadcaster b;
- AtmosphereResource<?,?> r = null;
- String idBroadcast = null;
- while (i.hasNext() && r == null) {
- idBroadcast = i.next();
- b = this.BROADCASTERS.get(idBroadcast);
- if (b != null)
- r = b.removeAtmosphereResource(resource);
- if (r != null) {
- logger.debug("Removed a connection from the broadcaster " + b.getID());
- this.removeBroadcaster(b, idBroadcast);
- }
- }
- return idBroadcast;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement