@Override public boolean setTimeout(long time, TimeUnit unit) { synchronized (responseLock) { if (done || cancelled) return false; if (timerID > -1 && !context.owner().cancelTimer(timerID)) { return false; } timerID = context.owner().setTimer(unit.toMillis(time), v -> handleTimeout()); } return true; }
@Override public boolean cancel() { synchronized (responseLock) { if (cancelled) { return true; } if (done) { return false; } done = true; cancelled = true; return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).build(), t -> vertxFlush()); } }
@Override public boolean cancel() { synchronized (responseLock) { if (cancelled) { return true; } if (done) { return false; } done = true; cancelled = true; return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).build(), t -> vertxFlush()); } }
@Override public void complete() { synchronized (responseLock) { if (done) return; if (cancelled) return; done = true; vertxFlush(); } }
@Override public void handle(Long v) { handleTimeout(); } });
@Override public boolean cancel(Date retryAfter) { synchronized (responseLock) { if (cancelled) return true; if (done) return false; done = true; cancelled = true; return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).header(HttpHeaders.RETRY_AFTER, retryAfter).build(), t -> vertxFlush()); } }
@Override public boolean resume(Object entity) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; done = true; return internalResume(entity, t -> vertxFlush()); } }
@Override public boolean cancel(int retryAfter) { synchronized (responseLock) { if (cancelled) return true; if (done) return false; done = true; cancelled = true; return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).header(HttpHeaders.RETRY_AFTER, retryAfter).build(), t -> vertxFlush()); } }
VertxExecutionContext(VertxHttpRequest request, VertxHttpResponse response, SynchronousDispatcher dispatcher) { super(dispatcher, request, response); this.request = request; this.response = response; this.asyncResponse = new VertxHttpAsyncResponse(dispatcher, request, response); }
@Override public boolean resume(Throwable ex) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; done = true; return internalResume(ex, t -> vertxFlush()); } }
protected void handleTimeout() { if (timeoutHandler != null) { timeoutHandler.handleTimeout(this); } if (done) return; resume(new ServiceUnavailableException()); } }
@Override public boolean cancel(Date retryAfter) { synchronized (responseLock) { if (cancelled) return true; if (done) return false; done = true; cancelled = true; return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).header(HttpHeaders.RETRY_AFTER, retryAfter).build(), t -> vertxFlush()); } }
@Override public boolean cancel(int retryAfter) { synchronized (responseLock) { if (cancelled) return true; if (done) return false; done = true; cancelled = true; return internalResume(Response.status(Response.Status.SERVICE_UNAVAILABLE).header(HttpHeaders.RETRY_AFTER, retryAfter).build(), t -> vertxFlush()); } }
@Override public void complete() { synchronized (responseLock) { if (done) return; if (cancelled) return; done = true; vertxFlush(); } }
protected void handleTimeout() { if (timeoutHandler != null) { timeoutHandler.handleTimeout(this); } if (done) return; resume(new ServiceUnavailableException()); } }
@Override public boolean resume(Throwable ex) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; done = true; return internalResume(ex, t -> vertxFlush()); } }
@Override public boolean resume(Object entity) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; done = true; return internalResume(entity, t -> vertxFlush()); } }
VertxExecutionContext(final VertxHttpRequest request, final VertxHttpResponse response, final SynchronousDispatcher dispatcher) { super(dispatcher, request, response); this.request = request; this.response = response; this.asyncResponse = new VertxHttpAsyncResponse(dispatcher, request, response); }