コード例 #1
0
  /** {@inheritDoc} */
  public void destroy() {
    started.set(false);
    destroyed.set(true);
    releaseExternalResources();
    if (notifierFuture != null) {
      notifierFuture.cancel(true);
    }

    if (asyncWriteFuture != null) {
      asyncWriteFuture.cancel(true);
    }

    if (bc != null) {
      bc.destroy();
    }

    if (broadcasterCache != null) {
      broadcasterCache.stop();
    }
    resources.clear();
    broadcastOnResume.clear();
    messages.clear();
    asyncWriteQueue.clear();
    delayedBroadcast.clear();
    broadcasterCache = null;

    if (BroadcasterFactory.getDefault() != null) {
      BroadcasterFactory.getDefault().remove(this, name);
    }

    if (currentLifecycleTask != null) {
      currentLifecycleTask.cancel(true);
    }
  }
コード例 #2
0
 protected boolean retrieveTrackedBroadcast(
     final AtmosphereResource<?, ?> r, final AtmosphereResourceEvent e) {
   List<?> missedMsg = broadcasterCache.retrieveFromCache(r);
   if (!missedMsg.isEmpty()) {
     e.setMessage(missedMsg);
     return true;
   }
   return false;
 }
コード例 #3
0
  protected void start() {
    if (!started.getAndSet(true)) {

      broadcasterCache = bc.getBroadcasterCache();
      broadcasterCache.start();

      notifierFuture = bc.getExecutorService().submit(getBroadcastHandler());
      asyncWriteFuture = bc.getAsyncWriteService().submit(getAsyncWriteHandler());
    }
  }
コード例 #4
0
 protected void trackBroadcastMessage(final AtmosphereResource<?, ?> r, Object msg) {
   broadcasterCache.addToCache(r, msg);
 }