File tree Expand file tree Collapse file tree 1 file changed +7
-1
lines changed
rsocket-core/src/main/java/io/rsocket/core Expand file tree Collapse file tree 1 file changed +7
-1
lines changed Original file line number Diff line number Diff line change 5
5
import java .util .Collection ;
6
6
import java .util .Iterator ;
7
7
import java .util .Queue ;
8
+ import java .util .concurrent .atomic .AtomicBoolean ;
8
9
9
- final class CleanOnClearQueueDecorator implements Queue <Payload > {
10
+ final class CleanOnClearQueueDecorator extends AtomicBoolean implements Queue <Payload > {
10
11
final Queue <Payload > delegate ;
11
12
12
13
CleanOnClearQueueDecorator (Queue <Payload > delegate ) {
@@ -15,6 +16,7 @@ final class CleanOnClearQueueDecorator implements Queue<Payload> {
15
16
16
17
@ Override
17
18
public void clear () {
19
+ set (true );
18
20
Payload p ;
19
21
while ((p = delegate .poll ()) != null ) {
20
22
ReferenceCountUtil .safeRelease (p );
@@ -83,6 +85,10 @@ public boolean retainAll(Collection<?> c) {
83
85
84
86
@ Override
85
87
public boolean offer (Payload payload ) {
88
+ if (get ()) {
89
+ ReferenceCountUtil .safeRelease (payload );
90
+ return true ;
91
+ }
86
92
return delegate .offer (payload );
87
93
}
88
94
You can’t perform that action at this time.
0 commit comments