@Override public void setRequestTimeoutMillis(long requestTimeoutMillis) { delegate().setRequestTimeoutMillis(requestTimeoutMillis); }
@Override public RpcResponse serve(ServiceRequestContext ctx, RpcRequest req) throws Exception { ctx.setRequestTimeoutMillis(0); return delegate().serve(ctx, req); } }
@Override public RpcResponse serve(ServiceRequestContext ctx, RpcRequest req) throws Exception { ctx.setRequestTimeoutMillis(((Number) req.params().get(0)).longValue() + ctx.requestTimeoutMillis()); return delegate().serve(ctx, req); } }
@Override public RpcResponse serve(ServiceRequestContext ctx, RpcRequest req) throws Exception { if (ctx.requestTimeoutMillis() > 0) { final String method = req.method(); if ("watchFile".equals(method) || "watchRepository".equals(method)) { final List<Object> params = req.params(); final long timeout = (Long) params.get(params.size() - 1); if (timeout > 0) { if (timeout > Long.MAX_VALUE - ctx.requestTimeoutMillis()) { ctx.setRequestTimeoutMillis(0); } else { ctx.setRequestTimeoutMillis(ctx.requestTimeoutMillis() + timeout); } } } } return delegate().serve(ctx, req); } }
@Override public RpcResponse serve(ServiceRequestContext ctx, RpcRequest req) throws Exception { if (ctx.requestTimeoutMillis() > 0) { final String method = req.method(); if ("watchFile".equals(method) || "watchRepository".equals(method)) { final List<Object> params = req.params(); final long timeout = (Long) params.get(params.size() - 1); if (timeout > 0) { ctx.setRequestTimeoutMillis( WatchTimeout.makeReasonable(timeout, ctx.requestTimeoutMillis())); } } } return delegate().serve(ctx, req); } }
@Override public RpcResponse serve(ServiceRequestContext ctx, RpcRequest req) throws Exception { if (ctx.requestTimeoutMillis() > 0) { final String method = req.method(); if ("watchFile".equals(method) || "watchRepository".equals(method)) { final List<Object> params = req.params(); final long timeout = (Long) params.get(params.size() - 1); if (timeout > 0) { ctx.setRequestTimeoutMillis( WatchTimeout.makeReasonable(timeout, ctx.requestTimeoutMillis())); } } } return delegate().serve(ctx, req); } }
/** * Converts the specified {@code request} to {@link Optional} which contains {@link WatchRequest} when * the request has {@link HttpHeaderNames#IF_NONE_MATCH}. {@link Optional#EMPTY} otherwise. */ @Override public Object convertRequest(ServiceRequestContext ctx, AggregatedHttpMessage request, Class<?> expectedResultType) throws Exception { final String ifNoneMatch = request.headers().get(HttpHeaderNames.IF_NONE_MATCH); if (!isNullOrEmpty(ifNoneMatch)) { final Revision lastKnownRevision = new Revision(ifNoneMatch); final String prefer = request.headers().get(HttpHeaderNames.PREFER); final long timeoutMillis; if (!isNullOrEmpty(prefer)) { timeoutMillis = getTimeoutMillis(prefer); } else { timeoutMillis = DEFAULT_TIMEOUT_MILLIS; } // Update timeout according to the watch API specifications. ctx.setRequestTimeoutMillis( WatchTimeout.makeReasonable(timeoutMillis, ctx.requestTimeoutMillis())); return Optional.of(new WatchRequest(lastKnownRevision, timeoutMillis)); } return Optional.empty(); }
/** * Converts the specified {@code request} to {@link Optional} which contains {@link WatchRequest} when * the request has {@link HttpHeaderNames#IF_NONE_MATCH}. {@link Optional#EMPTY} otherwise. */ @Override public Object convertRequest(ServiceRequestContext ctx, AggregatedHttpMessage request, Class<?> expectedResultType) throws Exception { final String ifNoneMatch = request.headers().get(HttpHeaderNames.IF_NONE_MATCH); if (!isNullOrEmpty(ifNoneMatch)) { final Revision lastKnownRevision = new Revision(ifNoneMatch); final String prefer = request.headers().get(HttpHeaderNames.PREFER); final long timeoutMillis; if (!isNullOrEmpty(prefer)) { timeoutMillis = getTimeoutMillis(prefer); } else { timeoutMillis = DEFAULT_TIMEOUT_MILLIS; } // Update timeout according to the watch API specifications. ctx.setRequestTimeoutMillis( WatchTimeout.makeReasonable(timeoutMillis, ctx.requestTimeoutMillis())); return Optional.of(new WatchRequest(lastKnownRevision, timeoutMillis)); } return Optional.empty(); }