private static String checkRequestContext(String ignored) { RequestContext.current(); return ignored; } }
private void ensureInRequestContextAwareEventLoop() { assertThat((ServiceRequestContext) RequestContext.current()).isNotNull(); } }
@GetMapping("/hello") Flux<String> hello() { // This method would be called in one of Armeria worker threads. assertThat((ServiceRequestContext) RequestContext.current()).isNotNull(); return Flux.just("h", "e", "l", "l", "o"); } }
@Override public void onNext(SimpleRequest value) { final RequestContext ctx = RequestContext.current(); final Attribute<Integer> attr = ctx.attr(CHECK_REQUEST_CONTEXT_COUNT); attr.set(attr.get() + 1); }
@Override public StreamObserver<SimpleRequest> checkRequestContext( StreamObserver<SimpleResponse> responseObserver) { final RequestContext ctx = RequestContext.current(); ctx.attr(CHECK_REQUEST_CONTEXT_COUNT).set(0); return new StreamObserver<SimpleRequest>() { @Override public void onNext(SimpleRequest value) { final RequestContext ctx = RequestContext.current(); final Attribute<Integer> attr = ctx.attr(CHECK_REQUEST_CONTEXT_COUNT); attr.set(attr.get() + 1); } @Override public void onError(Throwable t) {} @Override public void onCompleted() { final RequestContext ctx = RequestContext.current(); final int count = ctx.attr(CHECK_REQUEST_CONTEXT_COUNT).get(); responseObserver.onNext( SimpleResponse.newBuilder() .setPayload( Payload.newBuilder() .setBody( ByteString.copyFromUtf8( Integer.toString(count)))) .build()); responseObserver.onCompleted(); } }; }
@Override public void onNext(SimpleResponse value) { try { final RequestContext ctx = RequestContext.current(); assertThat(value).isEqualTo(goldenResponse); final ByteBuf buf = ctx.attr(GrpcUnsafeBufferUtil.BUFFERS).get().get(value); assertThat(buf.refCnt()).isNotZero(); GrpcUnsafeBufferUtil.releaseBuffer(value, ctx); assertThat(buf.refCnt()).isZero(); } catch (Throwable t) { resultQueue.add(t); } }
private static Single<String> nestSingle(String input) { RequestContext.current(); return single(input).flatMap(RequestContextAssemblyTest::single); }
Flowable<String> flowable(int count) { RequestContext.current(); return Flowable.create(emitter -> { pool.submit(() -> { for (int i = 0; i < count; i++) { emitter.onNext("" + count); } emitter.onComplete(); }); }, BackpressureStrategy.BUFFER); }
public Mono<ServerResponse> route(ServerRequest request) { assertThat((ServiceRequestContext) RequestContext.current()).isNotNull(); return ServerResponse.ok().contentType(MediaType.TEXT_PLAIN) .body(BodyInserters.fromObject("route")); }
public Mono<ServerResponse> route2(ServerRequest request) { assertThat((ServiceRequestContext) RequestContext.current()).isNotNull(); return Mono.from(request.bodyToMono(Map.class)) .map(map -> assertThat(map.get("a")).isEqualTo(1)) .then(ServerResponse.ok().contentType(MediaType.APPLICATION_JSON) .body(BodyInserters.fromObject("[\"route\"]"))); } }
@Override public void onCompleted() { final RequestContext ctx = RequestContext.current(); final int count = ctx.attr(CHECK_REQUEST_CONTEXT_COUNT).get(); responseObserver.onNext( SimpleResponse.newBuilder() .setPayload( Payload.newBuilder() .setBody( ByteString.copyFromUtf8( Integer.toString(count)))) .build()); responseObserver.onCompleted(); } };
@Override protected void configure(ServerBuilder sb) throws Exception { sb.gracefulShutdownTimeout(1000L, 2000L); sb.defaultRequestTimeoutMillis(0); // Disable RequestTimeoutException. sb.service("/sleep", THttpService.of( (AsyncIface) (milliseconds, resultHandler) -> RequestContext.current().eventLoop().schedule( () -> resultHandler.onComplete(milliseconds), milliseconds, MILLISECONDS))); } };
CompletableFuture.allOf(f1, f2).whenCompleteAsync((aVoid, throwable) -> { resultHandler.onComplete(f1.join() + ", and " + f2.join()); }, RequestContext.current().contextAwareExecutor()); })));
public static User currentUser() { return currentUser(RequestContext.current()); }
public static Author currentAuthor() { return currentAuthor(RequestContext.current()); }
public static Author currentAuthor() { return currentAuthor(RequestContext.current()); }
public static Author currentAuthor() { return currentAuthor(RequestContext.current()); }