private void close(Collection<RSocketSupplier> suppliers) { for (RSocketSupplier supplier : suppliers) { try { supplier.dispose(); } catch (Throwable t) { } } }
@Override public synchronized void accept(RSocketSupplier rSocketSupplier) { leasedSuppliers.remove(rSocketSupplier); if (!rSocketSupplier.isDisposed()) { factoryPool.add(rSocketSupplier); } }
@Override public Mono<RSocket> get() { return rSocketSupplier .get() .doOnNext(o -> updateErrorPercentage(1.0)) .doOnError(t -> updateErrorPercentage(0.0)) .map(AvailabilityAwareRSocketProxy::new); }
private static RSocketSupplier succeedingFactory(RSocket socket) { RSocketSupplier mock = Mockito.mock(RSocketSupplier.class); Mockito.when(mock.availability()).thenReturn(1.0); Mockito.when(mock.get()).thenReturn(Mono.just(socket)); Mockito.when(mock.onClose()).thenReturn(Mono.never()); return mock; }
private static RSocketSupplier failingClient(SocketAddress sa) { RSocketSupplier mock = Mockito.mock(RSocketSupplier.class); Mockito.when(mock.availability()).thenReturn(0.0); Mockito.when(mock.get()) .thenAnswer( a -> { Assert.fail(); return null; }); return mock; } }
Mockito.when(factory.availability()).thenReturn(1.0); Mockito.when(factory.get()).thenReturn(Mono.just(socket)); RSocketSupplier failureFactory = new RSocketSupplier(factory, 100, TimeUnit.MILLISECONDS); .get() .subscribe( new Subscriber<RSocket>() {
@Override public Mono<Payload> requestResponse(Payload payload) { return Mono.from( subscriber -> { Subscriber<? super Payload> oneSubscriber = new OneSubscriber<>(subscriber); Subscriber<? super Payload> backupRequest = new FirstRequestSubscriber(oneSubscriber, () -> child.requestResponse(payload)); child.requestResponse(payload).subscribe(backupRequest); }); }
if (poolSize == 1) { RSocketSupplier rSocketSupplier = factoryPool.get(0); if (rSocketSupplier.availability() > 0.0) { factoryPool.remove(0); leasedSuppliers.add(rSocketSupplier); if (factory0.availability() > 0.0 && factory1.availability() > 0.0) { break; if (factory0.availability() > factory1.availability()) { factoryPool.remove(i0); leasedSuppliers.add(factory0);
@Override public void onSubscribe(Subscription s) { start = Clock.now(); if (q.estimation() > 0) { future = executor.schedule( () -> action.get().subscribe(new BackupRequestSubscriber<>(oneSubscriber, s)), (long) q.estimation(), TimeUnit.MICROSECONDS); } oneSubscriber.onSubscribe(s); }
@Test public void testTimeoutSocket() { TestingRSocket socket = new TestingRSocket((subscriber, payload) -> false); RSocket timeout = RSockets.timeout(Duration.ofMillis(50)).apply(socket);
@Override public Mono<Payload> requestResponse(Payload payload) { return Mono.from( subscriber -> { Subscriber<? super Payload> oneSubscriber = new OneSubscriber<>(subscriber); Subscriber<? super Payload> backupRequest = new FirstRequestSubscriber(oneSubscriber, () -> child.requestResponse(payload)); child.requestResponse(payload).subscribe(backupRequest); }); }
if (poolSize == 1) { RSocketSupplier rSocketSupplier = factoryPool.get(0); if (rSocketSupplier.availability() > 0.0) { factoryPool.remove(0); leasedSuppliers.add(rSocketSupplier); if (factory0.availability() > 0.0 && factory1.availability() > 0.0) { break; if (factory0.availability() > factory1.availability()) { factoryPool.remove(i0); leasedSuppliers.add(factory0);
@Override public synchronized void accept(RSocketSupplier rSocketSupplier) { leasedSuppliers.remove(rSocketSupplier); if (!rSocketSupplier.isDisposed()) { factoryPool.add(rSocketSupplier); } }
@Override public Mono<RSocket> get() { return rSocketSupplier .get() .doOnNext(o -> updateErrorPercentage(1.0)) .doOnError(t -> updateErrorPercentage(0.0)) .map(AvailabilityAwareRSocketProxy::new); }
@Override public void onSubscribe(Subscription s) { start = Clock.now(); if (q.estimation() > 0) { future = executor.schedule( () -> action.get().subscribe(new BackupRequestSubscriber<>(oneSubscriber, s)), (long) q.estimation(), TimeUnit.MICROSECONDS); } oneSubscriber.onSubscribe(s); }
private void close(Collection<RSocketSupplier> suppliers) { for (RSocketSupplier supplier : suppliers) { try { supplier.dispose(); } catch (Throwable t) { } } }