@Override public void onClose(AtmosphereResourceEvent event) { cancelF(request); } });
@Override public byte[] transformPayload(AtmosphereResponse response, byte[] responseDraft, byte[] data) throws IOException { cancelF(request); return responseDraft; }
@Override public void onResume(AtmosphereResourceEvent event) { cancelF(request); }
@Override public void onDisconnect(AtmosphereResourceEvent event) { cancelF(request); }
@Override public void destroy() { if (destroyed.getAndSet(true)) return; for (AtmosphereResource r : config.resourcesFactory().findAll()) { cancelF(r.getRequest()); } }
@Override public Object call() throws Exception { synchronized (r) { if (AtmosphereResourceImpl.class.cast(r).isInScope() && r.isSuspended()) { try { logger.trace("Heartbeat for Resource {}", r); response.write(paddingBytes, false); if (Utils.resumableTransport(r.transport()) && resumeOnHeartbeat) { r.resume(); } else if (flushBuffer) { response.flushBuffer(); } } catch (Throwable t) { logger.trace("{}", r.uuid(), t); cancelF(request); } } else { cancelF(request); } } return null; } }, interval, TimeUnit.SECONDS));
} catch (IOException e) { logger.warn("", e); cancelF(request); return Action.CONTINUE;