@Override public Flux<Payload> requestStream(Payload payload) { return Flux.defer( () -> { Payload transformedPayload = payloadTransformer.apply(payload); if (transformedPayload != null) { quietRelease(payload); } return rSocketSupplier.get().requestStream(transformedPayload); }); }
private ProteusSocket unwrappedDestination(String destination, String group) { return new DefaultProteusSocket( payload -> { ByteBuf data = payload.sliceData().retain(); ByteBuf metadataToWrap = payload.sliceMetadata(); ByteBuf metadata = DestinationFlyweight.encode( ByteBufAllocator.DEFAULT, DefaultProteusBrokerService.this.destinationNameFactory.peek(), DefaultProteusBrokerService.this.group, destination, group, metadataToWrap); Payload wrappedPayload = ByteBufPayload.create(data, metadata); payload.release(); return wrappedPayload; }, this::selectRSocket); }
@Test public void testFireForget() { Payload incoming = Mockito.mock(Payload.class); Payload transformed = ByteBufPayload.create("transformed"); RSocket mock = Mockito.mock(RSocket.class); Mockito.when(mock.fireAndForget(Mockito.any(Payload.class))).thenReturn(Mono.empty()); DefaultProteusSocket socket = new DefaultProteusSocket(payload -> transformed, () -> mock); socket.fireAndForget(incoming).block(); Mockito.verify(incoming, Mockito.times(0)).release(); }
@Test public void testRequestResponse() { Payload incoming = Mockito.mock(Payload.class); Payload transformed = ByteBufPayload.create("transformed"); Payload outgoing = ByteBufPayload.create("outgoing"); RSocket mock = Mockito.mock(RSocket.class); Mockito.when(mock.requestResponse(Mockito.any(Payload.class))).thenReturn(Mono.just(outgoing)); DefaultProteusSocket socket = new DefaultProteusSocket(payload -> transformed, () -> mock); Payload block = socket.requestResponse(incoming).block(); Assert.assertTrue(block == outgoing); Mockito.verify(incoming, Mockito.times(0)).release(); }
@Test public void testRequestStream() { Payload incoming = Mockito.mock(Payload.class); Payload transformed = ByteBufPayload.create("transformed"); Payload outgoing = ByteBufPayload.create("outgoing"); RSocket mock = Mockito.mock(RSocket.class); Mockito.when(mock.requestStream(Mockito.any(Payload.class))).thenReturn(Flux.just(outgoing)); DefaultProteusSocket socket = new DefaultProteusSocket(payload -> transformed, () -> mock); Payload block = socket.requestStream(incoming).blockLast(); Assert.assertTrue(block == outgoing); Mockito.verify(incoming, Mockito.times(0)).release(); }
@Test public void testRequestChannel() { Payload incoming = Mockito.mock(Payload.class); Payload transformed = ByteBufPayload.create("transformed"); Payload outgoing = ByteBufPayload.create("outgoing"); DefaultProteusSocket socket = new DefaultProteusSocket( payload -> transformed, () -> new AbstractRSocket() { @Override public Flux<Payload> requestChannel(Publisher<Payload> payloads) { return Flux.from(payloads).thenMany(Flux.just(outgoing)); } }); Payload block = socket.requestChannel(Mono.just(incoming)).blockLast(); Assert.assertTrue(block == outgoing); Mockito.verify(incoming, Mockito.times(0)).release(); } }
private ProteusSocket unwrappedGroup(String group) { return new DefaultProteusSocket( payload -> { ByteBuf data = payload.sliceData().retain(); ByteBuf metadataToWrap = payload.sliceMetadata(); ByteBuf metadata = GroupFlyweight.encode( ByteBufAllocator.DEFAULT, DefaultProteusBrokerService.this.destinationNameFactory.peek(), DefaultProteusBrokerService.this.group, group, metadataToWrap); Payload wrappedPayload = ByteBufPayload.create(data, metadata); payload.release(); return wrappedPayload; }, this::selectRSocket); }
private ProteusSocket unwrappedBroadcast(String group) { return new DefaultProteusSocket( payload -> { ByteBuf data = payload.sliceData().retain(); ByteBuf metadataToWrap = payload.sliceMetadata(); ByteBuf metadata = BroadcastFlyweight.encode( ByteBufAllocator.DEFAULT, DefaultProteusBrokerService.this.destinationNameFactory.peek(), DefaultProteusBrokerService.this.group, group, metadataToWrap); Payload wrappedPayload = ByteBufPayload.create(data, metadata); payload.release(); return wrappedPayload; }, this::selectRSocket); }
@Override public Mono<Void> metadataPush(Payload payload) { return Mono.defer( () -> { Payload transformedPayload = payloadTransformer.apply(payload); if (transformedPayload != null) { quietRelease(payload); } return rSocketSupplier.get().metadataPush(transformedPayload); }); }
private ProteusSocket unwrappedGroup(String group) { return new DefaultProteusSocket( payload -> { ByteBuf data = payload.sliceData().retain(); ByteBuf metadataToWrap = payload.sliceMetadata(); ByteBuf metadata = GroupFlyweight.encode( ByteBufAllocator.DEFAULT, DefaultProteusBrokerService.this.destinationNameFactory.peek(), DefaultProteusBrokerService.this.group, group, metadataToWrap); Payload wrappedPayload = ByteBufPayload.create(data, metadata); payload.release(); return wrappedPayload; }, this::selectRSocket); }
@Override public Mono<Payload> requestResponse(Payload payload) { return Mono.defer( () -> { Payload transformedPayload = payloadTransformer.apply(payload); if (transformedPayload != null) { quietRelease(payload); } return rSocketSupplier.get().requestResponse(transformedPayload); }); }
private ProteusSocket unwrappedBroadcast(String group) { return new DefaultProteusSocket( payload -> { ByteBuf data = payload.sliceData().retain(); ByteBuf metadataToWrap = payload.sliceMetadata(); ByteBuf metadata = BroadcastFlyweight.encode( ByteBufAllocator.DEFAULT, DefaultProteusBrokerService.this.destinationNameFactory.peek(), DefaultProteusBrokerService.this.group, group, metadataToWrap); Payload wrappedPayload = ByteBufPayload.create(data, metadata); payload.release(); return wrappedPayload; }, this::selectRSocket); }
@Override public Mono<Void> metadataPush(Payload payload) { return Mono.defer( () -> { Payload transformedPayload = payloadTransformer.apply(payload); if (transformedPayload != null) { quietRelease(payload); } return rSocketSupplier.get().metadataPush(transformedPayload); }); }
private ProteusSocket unwrappedBroadcast(String group) { return new DefaultProteusSocket( payload -> { ByteBuf data = payload.sliceData().retain(); ByteBuf metadataToWrap = payload.sliceMetadata(); ByteBuf metadata = BroadcastFlyweight.encode( ByteBufAllocator.DEFAULT, DefaultProteusBrokerService.this.destinationNameFactory.peek(), DefaultProteusBrokerService.this.group, group, metadataToWrap); Payload wrappedPayload = ByteBufPayload.create(data, metadata); payload.release(); return wrappedPayload; }, this::selectRSocket); }
@Override public Flux<Payload> requestStream(Payload payload) { return Flux.defer( () -> { Payload transformedPayload = payloadTransformer.apply(payload); if (transformedPayload != null) { quietRelease(payload); } return rSocketSupplier.get().requestStream(transformedPayload); }); }
private ProteusSocket unwrappedGroup(String group) { return new DefaultProteusSocket( payload -> { ByteBuf data = payload.sliceData().retain(); ByteBuf metadataToWrap = payload.sliceMetadata(); ByteBuf metadata = GroupFlyweight.encode( ByteBufAllocator.DEFAULT, DefaultProteusBrokerService.this.destinationNameFactory.peek(), DefaultProteusBrokerService.this.group, group, metadataToWrap); Payload wrappedPayload = ByteBufPayload.create(data, metadata); payload.release(); return wrappedPayload; }, this::selectRSocket); }
@Override public Mono<Void> metadataPush(Payload payload) { return Mono.defer( () -> { Payload transformedPayload = payloadTransformer.apply(payload); if (transformedPayload != null) { quietRelease(payload); } return rSocketSupplier.get().metadataPush(transformedPayload); }); }
private ProteusSocket unwrappedDestination(String destination, String group) { return new DefaultProteusSocket( payload -> { ByteBuf data = payload.sliceData().retain(); ByteBuf metadataToWrap = payload.sliceMetadata(); ByteBuf metadata = DestinationFlyweight.encode( ByteBufAllocator.DEFAULT, DefaultProteusBrokerService.this.destinationNameFactory.peek(), DefaultProteusBrokerService.this.group, destination, group, metadataToWrap); Payload wrappedPayload = ByteBufPayload.create(data, metadata); payload.release(); return wrappedPayload; }, this::selectRSocket); }
@Override public Mono<Payload> requestResponse(Payload payload) { return Mono.defer( () -> { Payload transformedPayload = payloadTransformer.apply(payload); if (transformedPayload != null) { quietRelease(payload); } return rSocketSupplier.get().requestResponse(transformedPayload); }); }
private ProteusSocket unwrappedDestination(String destination, String group) { return new DefaultProteusSocket( payload -> { ByteBuf data = payload.sliceData().retain(); ByteBuf metadataToWrap = payload.sliceMetadata(); ByteBuf metadata = DestinationFlyweight.encode( ByteBufAllocator.DEFAULT, DefaultProteusBrokerService.this.destinationNameFactory.peek(), DefaultProteusBrokerService.this.group, destination, group, metadataToWrap); Payload wrappedPayload = ByteBufPayload.create(data, metadata); payload.release(); return wrappedPayload; }, this::selectRSocket); }