@Test public void testServerSequence() { StreamIdSupplier s = StreamIdSupplier.serverSupplier(); assertEquals(2, s.nextStreamId()); assertEquals(4, s.nextStreamId()); assertEquals(6, s.nextStreamId()); }
@Test public void testClientSequence() { StreamIdSupplier s = StreamIdSupplier.clientSupplier(); assertEquals(1, s.nextStreamId()); assertEquals(3, s.nextStreamId()); assertEquals(5, s.nextStreamId()); }
private Mono<Void> handleFireAndForget(Payload payload) { return lifecycle .active() .then( Mono.fromRunnable( () -> { final int streamId = streamIdSupplier.nextStreamId(); final Frame requestFrame = Frame.Request.from(streamId, FrameType.REQUEST_FNF, payload, 1); payload.release(); sendProcessor.onNext(requestFrame); })); }
private Mono<Payload> handleRequestResponse(final Payload payload) { return lifecycle .active() .then( Mono.defer( () -> { int streamId = streamIdSupplier.nextStreamId(); final Frame requestFrame = Frame.Request.from(streamId, FrameType.REQUEST_RESPONSE, payload, 1); payload.release(); UnicastMonoProcessor<Payload> receiver = UnicastMonoProcessor.create(); receivers.put(streamId, receiver); sendProcessor.onNext(requestFrame); return receiver .doOnError(t -> sendProcessor.onNext(Frame.Error.from(streamId, t))) .doFinally( s -> { if (s == SignalType.CANCEL) { sendProcessor.onNext(Frame.Cancel.from(streamId)); } receivers.remove(streamId); }); })); }
() -> { final UnicastProcessor<Payload> receiver = UnicastProcessor.create(); final int streamId = streamIdSupplier.nextStreamId(); final AtomicBoolean firstRequest = new AtomicBoolean(true);
Flux.defer( () -> { int streamId = streamIdSupplier.nextStreamId();
@Test public void testClientIsValid() { StreamIdSupplier s = StreamIdSupplier.clientSupplier(); assertFalse(s.isBeforeOrCurrent(1)); assertFalse(s.isBeforeOrCurrent(3)); s.nextStreamId(); assertTrue(s.isBeforeOrCurrent(1)); assertFalse(s.isBeforeOrCurrent(3)); s.nextStreamId(); assertTrue(s.isBeforeOrCurrent(3)); // negative assertFalse(s.isBeforeOrCurrent(-1)); // connection assertFalse(s.isBeforeOrCurrent(0)); // server also accepted (checked externally) assertTrue(s.isBeforeOrCurrent(2)); }
@Test public void testServerIsValid() { StreamIdSupplier s = StreamIdSupplier.serverSupplier(); assertFalse(s.isBeforeOrCurrent(2)); assertFalse(s.isBeforeOrCurrent(4)); s.nextStreamId(); assertTrue(s.isBeforeOrCurrent(2)); assertFalse(s.isBeforeOrCurrent(4)); s.nextStreamId(); assertTrue(s.isBeforeOrCurrent(4)); // negative assertFalse(s.isBeforeOrCurrent(-2)); // connection assertFalse(s.isBeforeOrCurrent(0)); // client also accepted (checked externally) assertTrue(s.isBeforeOrCurrent(1)); } }
private Mono<Void> handleFireAndForget(Payload payload) { return lifecycle .active() .then( Mono.fromRunnable( () -> { final int streamId = streamIdSupplier.nextStreamId(); final Frame requestFrame = Frame.Request.from(streamId, FrameType.REQUEST_FNF, payload, 1); payload.release(); sendProcessor.onNext(requestFrame); })); }
private Mono<Payload> handleRequestResponse(final Payload payload) { return lifecycle .active() .then( Mono.defer( () -> { int streamId = streamIdSupplier.nextStreamId(); final Frame requestFrame = Frame.Request.from(streamId, FrameType.REQUEST_RESPONSE, payload, 1); payload.release(); UnicastMonoProcessor<Payload> receiver = UnicastMonoProcessor.create(); receivers.put(streamId, receiver); sendProcessor.onNext(requestFrame); return receiver .doOnError(t -> sendProcessor.onNext(Frame.Error.from(streamId, t))) .doFinally( s -> { if (s == SignalType.CANCEL) { sendProcessor.onNext(Frame.Cancel.from(streamId)); } receivers.remove(streamId); }); })); }
() -> { final UnicastProcessor<Payload> receiver = UnicastProcessor.create(); final int streamId = streamIdSupplier.nextStreamId(); final AtomicBoolean firstRequest = new AtomicBoolean(true);
Flux.defer( () -> { int streamId = streamIdSupplier.nextStreamId();