Skip to content

Commit 5059f51

Browse files
committed
fixes tests
Signed-off-by: Oleh Dokuka <[email protected]>
1 parent e837f2f commit 5059f51

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

rsocket-core/src/main/java/io/rsocket/core/RSocketRequester.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
import io.rsocket.keepalive.KeepAliveSupport;
5151
import io.rsocket.lease.RequesterLeaseHandler;
5252
import java.nio.channels.ClosedChannelException;
53-
import java.util.concurrent.CancellationException;
5453
import java.util.concurrent.atomic.AtomicBoolean;
5554
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
5655
import java.util.function.Consumer;
@@ -64,6 +63,7 @@
6463
import reactor.core.publisher.BaseSubscriber;
6564
import reactor.core.publisher.Flux;
6665
import reactor.core.publisher.Mono;
66+
import reactor.core.publisher.MonoProcessor;
6767
import reactor.core.publisher.Operators;
6868
import reactor.core.publisher.SignalType;
6969
import reactor.core.publisher.UnicastProcessor;
@@ -109,6 +109,7 @@ class RSocketRequester implements RSocket {
109109
private final RequesterLeaseHandler leaseHandler;
110110
private final ByteBufAllocator allocator;
111111
private final KeepAliveFramesAcceptor keepAliveFramesAcceptor;
112+
private final MonoProcessor<Void> onClose;
112113
private final Scheduler serialScheduler;
113114

114115
RSocketRequester(
@@ -129,6 +130,7 @@ class RSocketRequester implements RSocket {
129130
this.leaseHandler = leaseHandler;
130131
this.senders = new SynchronizedIntObjectHashMap<>();
131132
this.receivers = new SynchronizedIntObjectHashMap<>();
133+
this.onClose = MonoProcessor.create();
132134
this.serialScheduler = serialScheduler;
133135

134136
// DO NOT Change the order here. The Send processor must be subscribed to before receiving
@@ -182,17 +184,17 @@ public double availability() {
182184

183185
@Override
184186
public void dispose() {
185-
tryTerminate(() -> new CancellationException("Disposed"));
187+
tryShutdown();
186188
}
187189

188190
@Override
189191
public boolean isDisposed() {
190-
return connection.isDisposed();
192+
return onClose.isDisposed();
191193
}
192194

193195
@Override
194196
public Mono<Void> onClose() {
195-
return connection.onClose();
197+
return onClose;
196198
}
197199

198200
private Mono<Void> handleFireAndForget(Payload payload) {
@@ -759,6 +761,11 @@ private void terminate(Throwable e) {
759761
senders.clear();
760762
receivers.clear();
761763
sendProcessor.dispose();
764+
if (e == CLOSED_CHANNEL_EXCEPTION) {
765+
onClose.onComplete();
766+
} else {
767+
onClose.onError(e);
768+
}
762769
}
763770

764771
private void handleSendProcessorError(Throwable t) {

0 commit comments

Comments
 (0)