@Override public Mono<Void> handle(WebSocketSession session) { infoRef.set(session.getHandshakeInfo()); return session.receive() .map(WebSocketMessage::getPayloadAsText) .subscribeWith(output) .then(); } })
@Test public void customHeader() throws Exception { HttpHeaders headers = new HttpHeaders(); headers.add("my-header", "my-value"); MonoProcessor<Object> output = MonoProcessor.create(); this.client.execute(getUrl("/custom-header"), headers, session -> session.receive() .map(WebSocketMessage::getPayloadAsText) .subscribeWith(output) .then()) .block(TIMEOUT); assertEquals("my-header:my-value", output.block(TIMEOUT)); }
@Override public Mono<Void> handle(WebSocketSession session) { infoRef.set(session.getHandshakeInfo()); return session.receive() .map(WebSocketMessage::getPayloadAsText) .subscribeWith(output) .then(); } })
@Test public void customHeader() throws Exception { HttpHeaders headers = new HttpHeaders(); headers.add("my-header", "my-value"); MonoProcessor<Object> output = MonoProcessor.create(); client.execute(getUrl("/custom-header"), headers, session -> session.receive() .map(WebSocketMessage::getPayloadAsText) .subscribeWith(output) .then()) .block(Duration.ofMillis(5000)); assertEquals("my-header:my-value", output.block(Duration.ofMillis(5000))); }
@Override public Mono<Void> store(Group registeredGroup, Event failDeliveredEvent) { Preconditions.checkArgument(registeredGroup != null, REGISTERED_GROUP_CANNOT_BE_NULL); Preconditions.checkArgument(failDeliveredEvent != null, FAIL_DELIVERED_EVENT_CANNOT_BE_NULL); return Mono.fromRunnable(() -> deadLetters.put(registeredGroup, failDeliveredEvent)) .subscribeWith(MonoProcessor.create()) .then(); }
@Override public Mono<Void> remove(Group registeredGroup, Event.EventId failDeliveredEventId) { Preconditions.checkArgument(registeredGroup != null, REGISTERED_GROUP_CANNOT_BE_NULL); Preconditions.checkArgument(failDeliveredEventId != null, FAIL_DELIVERED_ID_EVENT_CANNOT_BE_NULL); return Flux.fromIterable(deadLetters.get(registeredGroup)) .filter(event -> event.getEventId().equals(failDeliveredEventId)) .next() .doOnNext(event -> deadLetters.remove(registeredGroup, event)) .subscribeWith(MonoProcessor.create()) .then(); }
stop.then(doStop()) .doFinally(s -> onStop.onComplete()) .subscribe(null, ex -> LOGGER.warn("Exception occurred on transport stop: " + ex));
@Override public Mono<Void> fireAndForget(Payload payload) { Mono<Void> defer = Mono.defer(() -> { final int streamId = streamIdSupplier.nextStreamId(); final Frame requestFrame = Frame.Request.from(streamId, FrameType.FIRE_AND_FORGET, payload, 1); return connection.sendOne(requestFrame); }); return started.then(defer); }
.then(doShutdown()) .doFinally(s -> onShutdown.onComplete()) .subscribeOn(scheduler)
.then(doShutdown()) .doFinally(s -> onShutdown.onComplete()) .subscribeOn(scheduler)
private Mono<Payload> handleRequestResponse(final Payload payload) { return started.then(() -> { int streamId = streamIdSupplier.nextStreamId(); final Frame requestFrame = Frame.Request.from(streamId, FrameType.REQUEST_RESPONSE, payload, 1);