@Override public void onClose(AtmosphereResourceEvent event) { onDisconnect(event); } });
public IdleResourceInterceptor maxInactiveTime(long maxInactiveTime) { this.maxInactiveTime = maxInactiveTime; start(); return this; }
@Override public void onSuspend(AtmosphereResourceEvent event) { // We did not clocked when this listener was added because connection was not already suspended if (!wasSuspended) { clock(interval, r, request, response); } }
private void scheduleHeartbeat(AtmosphereResource r) { //REVISIT make the schedule configurable heartbeat.addAtmosphereResource(r); if (!heartbeatScheduled) { heartbeat.scheduleFixedBroadcast(String.format(getHeartbeatTemplate(), getHeartbeatTemplateArguments()), DEFAULT_HEARTBEAT_INTERVAL, DEFAULT_HEARTBEAT_INTERVAL, TimeUnit.SECONDS); heartbeatScheduled = true; } }
@Override public void configure(AtmosphereConfig config) { factory = config.getBroadcasterFactory(); factory.addBroadcasterListener(new B()); stateTracker = ExecutorsFactory.getScheduler(config); String s = config.getInitParameter(STATE_RECOVERY_TIMEOUT); if (s != null) { timeout = Long.parseLong(s); } startStateTracker(); logger.trace("{} started.", AtmosphereResourceStateRecovery.class.getName()); }
@Override public void onClose(AtmosphereResourceEvent event) { cancelF(request); } });
public PaddingAtmosphereInterceptor(){ paddingText = confPadding(2048); padding = paddingText.getBytes(); }
@Override public byte[] transformPayload(AtmosphereResponse response, byte[] responseDraft, byte[] data) throws IOException { return createResponse(response, responseDraft); } }
@Override public void prePayload(AtmosphereResponse response, byte[] data, int offset, int length) { padding(); }
public void run() { idleResources(); } }, 0, 2, TimeUnit.SECONDS);
public AtmosphereResourceStateRecovery timeout(long timeout){ this.timeout = timeout; trackerFuture.cancel(false); startStateTracker(); return this; }
@Override public void prePayload(AtmosphereResponse response, byte[] data, int offset, int length) { String callbackName = callbackName(); response.write(callbackName + startChunk); }
@Override public byte[] transformPayload(AtmosphereResponse response, byte[] responseDraft, byte[] data) throws IOException { String charEncoding = response.getCharacterEncoding() == null ? "UTF-8" : response.getCharacterEncoding(); return escapeForJavaScript(new String(responseDraft, charEncoding)).getBytes(charEncoding); }
@Override public byte[] transformPayload(AtmosphereResponse response, byte[] responseDraft, byte[] data) throws IOException { boolean noPadding = padding(); // The CALLBACK_JAVASCRIPT_PROTOCOL may be called by a framework running on top of Atmosphere // In that case, we must pad/protocol indenendently of the state of the AtmosphereResource if (!noPadding || r.getRequest().getAttribute(CALLBACK_JAVASCRIPT_PROTOCOL) != null) { if (isMultilineData(responseDraft)) { // return a padded multiline-data return encodeMultilineData(responseDraft); } } return responseDraft; }
@Override public byte[] transformPayload(AtmosphereResponse response, byte[] responseDraft, byte[] data) throws IOException { cancelF(request); return responseDraft; }
public void configure(AtmosphereConfig config) { this.config = config; String maxInactive = config.getInitParameter(MAX_INACTIVE); if (maxInactive != null) { maxInactiveTime = Long.parseLong(maxInactive); } start(); }
@Override public void postPayload(final AtmosphereResponse response, byte[] data, int offset, int length) { logger.trace("Scheduling heartbeat for {}", r.uuid()); clock(interval, r, request, response); } });
public PaddingAtmosphereInterceptor(int size){ paddingText = confPadding(size); padding = paddingText.getBytes(); }
@Override public void onResume(AtmosphereResourceEvent event) { cancelF(request); }
@Override public void onDisconnect(AtmosphereResourceEvent event) { cancelF(request); }