Hide isOwned
, countBorrows
, and acquire
from the public API, even on CompositeBuffer
This commit is contained in:
parent
1c25fa88b7
commit
05d76c27c1
@ -16,6 +16,7 @@
|
||||
package io.netty.buffer.api;
|
||||
|
||||
import io.netty.buffer.api.internal.ResourceSupport;
|
||||
import io.netty.buffer.api.internal.Statics;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
@ -1378,15 +1379,14 @@ public final class CompositeBuffer extends ResourceSupport<Buffer, CompositeBuff
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOwned() {
|
||||
protected boolean isOwned() {
|
||||
return super.isOwned() && allConstituentsAreOwned();
|
||||
}
|
||||
|
||||
private boolean allConstituentsAreOwned() {
|
||||
boolean result = true;
|
||||
for (Buffer buf : bufs) {
|
||||
//noinspection unchecked
|
||||
result &= ((ResourceSupport<Buffer, ?>) buf).isOwned();
|
||||
result &= Statics.isOwned((ResourceSupport<?, ?>) buf);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -40,7 +40,8 @@ import java.nio.channels.ScatteringByteChannel;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import static io.netty.buffer.api.internal.Statics.asRS;
|
||||
import static io.netty.buffer.api.internal.Statics.acquire;
|
||||
import static io.netty.buffer.api.internal.Statics.isOwned;
|
||||
|
||||
public final class ByteBufAdaptor extends ByteBuf {
|
||||
private final ByteBufAllocatorAdaptor alloc;
|
||||
@ -82,7 +83,7 @@ public final class ByteBufAdaptor extends ByteBuf {
|
||||
try {
|
||||
buffer.ensureWritable(diff);
|
||||
} catch (IllegalStateException e) {
|
||||
if (!asRS(buffer).isOwned()) {
|
||||
if (!isOwned((ResourceSupport<?, ?>) buffer)) {
|
||||
throw new UnsupportedOperationException(e);
|
||||
}
|
||||
throw e;
|
||||
@ -217,7 +218,7 @@ public final class ByteBufAdaptor extends ByteBuf {
|
||||
checkAccess();
|
||||
if (writableBytes() < minWritableBytes) {
|
||||
try {
|
||||
if (asRS(buffer).isOwned()) {
|
||||
if (isOwned((ResourceSupport<?, ?>) buffer)) {
|
||||
// Good place.
|
||||
buffer.ensureWritable(minWritableBytes);
|
||||
} else {
|
||||
@ -1628,7 +1629,7 @@ public final class ByteBufAdaptor extends ByteBuf {
|
||||
@Override
|
||||
public ByteBuf retain(int increment) {
|
||||
for (int i = 0; i < increment; i++) {
|
||||
asRS(buffer).acquire();
|
||||
acquire((ResourceSupport<?,?>) buffer);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
@ -1644,9 +1645,9 @@ public final class ByteBufAdaptor extends ByteBuf {
|
||||
}
|
||||
if (buffer instanceof ResourceSupport) {
|
||||
var rc = (ResourceSupport<?, ?>) buffer;
|
||||
return rc.countBorrows();
|
||||
return Statics.countBorrows(rc);
|
||||
}
|
||||
return asRS(buffer).isOwned()? 0 : 1;
|
||||
return isOwned((ResourceSupport<?, ?>) buffer)? 0 : 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -38,6 +38,11 @@ public abstract class ResourceSupport<I extends Resource<I>, T extends ResourceS
|
||||
tracer = LifecycleTracer.get();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
static <T> T acquire(ResourceSupport<?, ?> obj) {
|
||||
return (T) obj.acquire();
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment the reference count.
|
||||
* <p>
|
||||
@ -45,7 +50,7 @@ public abstract class ResourceSupport<I extends Resource<I>, T extends ResourceS
|
||||
*
|
||||
* @return This {@link Resource} instance.
|
||||
*/
|
||||
public final I acquire() {
|
||||
protected final I acquire() {
|
||||
if (acquires < 0) {
|
||||
throw attachTrace(new IllegalStateException("This resource is closed: " + this + '.'));
|
||||
}
|
||||
@ -112,10 +117,18 @@ public abstract class ResourceSupport<I extends Resource<I>, T extends ResourceS
|
||||
"Cannot send() a reference counted object with " + countBorrows() + " borrows: " + this + '.');
|
||||
}
|
||||
|
||||
public boolean isOwned() {
|
||||
static boolean isOwned(ResourceSupport<?, ?> obj) {
|
||||
return obj.isOwned();
|
||||
}
|
||||
|
||||
protected boolean isOwned() {
|
||||
return acquires == 0;
|
||||
}
|
||||
|
||||
static int countBorrows(ResourceSupport<?, ?> obj) {
|
||||
return obj.countBorrows();
|
||||
}
|
||||
|
||||
/**
|
||||
* Count the number of borrows of this object.
|
||||
* Note that even if the number of borrows is {@code 0}, this object might not be {@linkplain #isOwned() owned}
|
||||
@ -123,7 +136,7 @@ public abstract class ResourceSupport<I extends Resource<I>, T extends ResourceS
|
||||
*
|
||||
* @return The number of borrows, if any, of this object.
|
||||
*/
|
||||
public int countBorrows() {
|
||||
protected int countBorrows() {
|
||||
return Math.max(acquires, 0);
|
||||
}
|
||||
|
||||
|
@ -165,14 +165,6 @@ public interface Statics {
|
||||
dest.position(destPos).put(bbslice(src, srcPos, length));
|
||||
}
|
||||
|
||||
static <T extends ResourceSupport<Buffer, ?> & Buffer> T asRS(Buffer buf) {
|
||||
if (!(buf instanceof ResourceSupport)) {
|
||||
throw new IllegalArgumentException("Buffer instance is not an instance of ResourceSupport.");
|
||||
}
|
||||
//noinspection unchecked
|
||||
return (T) buf;
|
||||
}
|
||||
|
||||
static IllegalStateException bufferIsClosed() {
|
||||
return new IllegalStateException("This buffer is closed.");
|
||||
}
|
||||
@ -180,4 +172,16 @@ public interface Statics {
|
||||
static IllegalStateException bufferIsReadOnly() {
|
||||
return new IllegalStateException("This buffer is read-only.");
|
||||
}
|
||||
|
||||
static <T> T acquire(ResourceSupport<?, ?> obj) {
|
||||
return ResourceSupport.acquire(obj);
|
||||
}
|
||||
|
||||
static boolean isOwned(ResourceSupport<?, ?> obj) {
|
||||
return ResourceSupport.isOwned(obj);
|
||||
}
|
||||
|
||||
static int countBorrows(ResourceSupport<?, ?> obj) {
|
||||
return ResourceSupport.countBorrows(obj);
|
||||
}
|
||||
}
|
||||
|
@ -17,10 +17,11 @@ package io.netty.buffer.api.tests;
|
||||
|
||||
import io.netty.buffer.api.Buffer;
|
||||
import io.netty.buffer.api.BufferAllocator;
|
||||
import io.netty.buffer.api.internal.ResourceSupport;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import static io.netty.buffer.api.internal.Statics.asRS;
|
||||
import static io.netty.buffer.api.internal.Statics.acquire;
|
||||
import static java.nio.ByteOrder.BIG_ENDIAN;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
@ -55,7 +56,7 @@ public class BufferCompactTest extends BufferTestSupport {
|
||||
Buffer buf = allocator.allocate(8, BIG_ENDIAN)) {
|
||||
buf.writeLong(0x0102030405060708L);
|
||||
assertEquals((byte) 0x01, buf.readByte());
|
||||
try (var ignore = asRS(buf).acquire()) {
|
||||
try (Buffer ignore = acquire((ResourceSupport<?, ?>) buf)) {
|
||||
assertThrows(IllegalStateException.class, () -> buf.compact());
|
||||
assertEquals(1, buf.readerOffset());
|
||||
}
|
||||
|
@ -19,13 +19,15 @@ import io.netty.buffer.api.Buffer;
|
||||
import io.netty.buffer.api.BufferAllocator;
|
||||
import io.netty.buffer.api.CompositeBuffer;
|
||||
import io.netty.buffer.api.Send;
|
||||
import io.netty.buffer.api.internal.ResourceSupport;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import java.nio.ByteOrder;
|
||||
|
||||
import static io.netty.buffer.api.internal.Statics.asRS;
|
||||
import static io.netty.buffer.api.internal.Statics.acquire;
|
||||
import static io.netty.buffer.api.internal.Statics.isOwned;
|
||||
import static java.nio.ByteOrder.BIG_ENDIAN;
|
||||
import static java.nio.ByteOrder.LITTLE_ENDIAN;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@ -56,7 +58,7 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
assertEquals(24, composite.capacity());
|
||||
assertTrue(asRS(composite).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) composite));
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,7 +135,7 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
Buffer a = allocator.allocate(8);
|
||||
Buffer b = allocator.allocate(8);
|
||||
CompositeBuffer composed = CompositeBuffer.compose(allocator, a.send())) {
|
||||
try (Buffer ignore = composed.acquire()) {
|
||||
try (Buffer ignore = acquire(composed)) {
|
||||
var exc = assertThrows(IllegalStateException.class, () -> composed.extendWith(b.send()));
|
||||
assertThat(exc).hasMessageContaining("owned");
|
||||
}
|
||||
@ -166,13 +168,13 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
try (BufferAllocator allocator = BufferAllocator.heap()) {
|
||||
Buffer a = allocator.allocate(1);
|
||||
CompositeBuffer composite = CompositeBuffer.compose(allocator, a.send());
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertThat(composite.capacity()).isOne();
|
||||
assertThat(composite.countComponents()).isOne();
|
||||
try (Buffer b = CompositeBuffer.compose(allocator)) {
|
||||
composite.extendWith(b.send());
|
||||
}
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertThat(composite.capacity()).isOne();
|
||||
assertThat(composite.countComponents()).isOne();
|
||||
}
|
||||
@ -482,11 +484,11 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
try (CompositeBuffer split = composite.splitComponentsFloor(4)) {
|
||||
assertTrue(split.isOwned());
|
||||
assertTrue(isOwned(split));
|
||||
assertTrue(split.isAccessible());
|
||||
assertThat(split.capacity()).isZero();
|
||||
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertTrue(composite.isAccessible());
|
||||
assertThat(composite.capacity()).isEqualTo(16);
|
||||
}
|
||||
@ -500,11 +502,11 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
try (CompositeBuffer split = composite.splitComponentsFloor(7)) {
|
||||
assertTrue(split.isOwned());
|
||||
assertTrue(isOwned(split));
|
||||
assertTrue(split.isAccessible());
|
||||
assertThat(split.capacity()).isZero();
|
||||
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertTrue(composite.isAccessible());
|
||||
assertThat(composite.capacity()).isEqualTo(16);
|
||||
}
|
||||
@ -518,11 +520,11 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
try (CompositeBuffer split = composite.splitComponentsFloor(12)) {
|
||||
assertTrue(split.isOwned());
|
||||
assertTrue(isOwned(split));
|
||||
assertTrue(split.isAccessible());
|
||||
assertThat(split.capacity()).isEqualTo(8);
|
||||
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertTrue(composite.isAccessible());
|
||||
assertThat(composite.capacity()).isEqualTo(8);
|
||||
}
|
||||
@ -536,11 +538,11 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
try (CompositeBuffer split = composite.splitComponentsFloor(8)) {
|
||||
assertTrue(split.isOwned());
|
||||
assertTrue(isOwned(split));
|
||||
assertTrue(split.isAccessible());
|
||||
assertThat(split.capacity()).isEqualTo(8);
|
||||
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertTrue(composite.isAccessible());
|
||||
assertThat(composite.capacity()).isEqualTo(8);
|
||||
}
|
||||
@ -554,11 +556,11 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
try (CompositeBuffer split = composite.splitComponentsCeil(4)) {
|
||||
assertTrue(split.isOwned());
|
||||
assertTrue(isOwned(split));
|
||||
assertTrue(split.isAccessible());
|
||||
assertThat(split.capacity()).isEqualTo(8);
|
||||
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertTrue(composite.isAccessible());
|
||||
assertThat(composite.capacity()).isEqualTo(8);
|
||||
}
|
||||
@ -572,11 +574,11 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
try (CompositeBuffer split = composite.splitComponentsCeil(7)) {
|
||||
assertTrue(split.isOwned());
|
||||
assertTrue(isOwned(split));
|
||||
assertTrue(split.isAccessible());
|
||||
assertThat(split.capacity()).isEqualTo(8);
|
||||
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertTrue(composite.isAccessible());
|
||||
assertThat(composite.capacity()).isEqualTo(8);
|
||||
}
|
||||
@ -590,11 +592,11 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
try (CompositeBuffer split = composite.splitComponentsCeil(12)) {
|
||||
assertTrue(split.isOwned());
|
||||
assertTrue(isOwned(split));
|
||||
assertTrue(split.isAccessible());
|
||||
assertThat(split.capacity()).isEqualTo(16);
|
||||
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertTrue(composite.isAccessible());
|
||||
assertThat(composite.capacity()).isEqualTo(0);
|
||||
}
|
||||
@ -606,11 +608,11 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
try (CompositeBuffer split = composite.splitComponentsCeil(12)) {
|
||||
assertTrue(split.isOwned());
|
||||
assertTrue(isOwned(split));
|
||||
assertTrue(split.isAccessible());
|
||||
assertThat(split.capacity()).isEqualTo(16);
|
||||
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertTrue(composite.isAccessible());
|
||||
assertThat(composite.capacity()).isEqualTo(8);
|
||||
}
|
||||
@ -624,11 +626,11 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
try (CompositeBuffer split = composite.splitComponentsCeil(7)) {
|
||||
assertTrue(split.isOwned());
|
||||
assertTrue(isOwned(split));
|
||||
assertTrue(split.isAccessible());
|
||||
assertThat(split.capacity()).isEqualTo(8);
|
||||
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertTrue(composite.isAccessible());
|
||||
assertThat(composite.capacity()).isEqualTo(8);
|
||||
}
|
||||
@ -642,11 +644,11 @@ public class BufferCompositionTest extends BufferTestSupport {
|
||||
allocator.allocate(8).send(),
|
||||
allocator.allocate(8).send())) {
|
||||
try (CompositeBuffer split = composite.splitComponentsCeil(0)) {
|
||||
assertTrue(split.isOwned());
|
||||
assertTrue(isOwned(split));
|
||||
assertTrue(split.isAccessible());
|
||||
assertThat(split.capacity()).isZero();
|
||||
|
||||
assertTrue(composite.isOwned());
|
||||
assertTrue(isOwned(composite));
|
||||
assertTrue(composite.isAccessible());
|
||||
assertThat(composite.capacity()).isEqualTo(16);
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ import io.netty.buffer.api.Buffer;
|
||||
import io.netty.buffer.api.BufferAllocator;
|
||||
import io.netty.buffer.api.CompositeBuffer;
|
||||
import io.netty.buffer.api.Send;
|
||||
import io.netty.buffer.api.internal.ResourceSupport;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
@ -26,7 +27,7 @@ import org.junit.jupiter.params.provider.MethodSource;
|
||||
import java.nio.ByteOrder;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static io.netty.buffer.api.internal.Statics.asRS;
|
||||
import static io.netty.buffer.api.internal.Statics.isOwned;
|
||||
import static java.nio.ByteOrder.BIG_ENDIAN;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
@ -165,7 +166,7 @@ public class BufferReadOnlyTest extends BufferTestSupport {
|
||||
assertThat(buf.readerOffset()).isZero();
|
||||
assertThat(buf.capacity()).isEqualTo(4);
|
||||
assertThat(buf.writerOffset()).isEqualTo(4);
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
assertTrue(buf.isAccessible());
|
||||
assertThat(buf.countComponents()).isOne();
|
||||
assertEquals((byte) 1, buf.readByte());
|
||||
@ -191,14 +192,14 @@ public class BufferReadOnlyTest extends BufferTestSupport {
|
||||
Buffer b = a.split(8)) {
|
||||
assertTrue(a.readOnly());
|
||||
assertTrue(b.readOnly());
|
||||
assertTrue(asRS(a).isOwned());
|
||||
assertTrue(asRS(b).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) a));
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) b));
|
||||
assertThat(a.capacity()).isEqualTo(8);
|
||||
assertThat(b.capacity()).isEqualTo(8);
|
||||
try (Buffer c = b.copy()) {
|
||||
assertTrue(c.readOnly());
|
||||
assertTrue(asRS(c).isOwned());
|
||||
assertTrue(asRS(b).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) c));
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) b));
|
||||
assertThat(c.capacity()).isEqualTo(8);
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ package io.netty.buffer.api.tests;
|
||||
import io.netty.buffer.api.Buffer;
|
||||
import io.netty.buffer.api.BufferAllocator;
|
||||
import io.netty.buffer.api.CompositeBuffer;
|
||||
import io.netty.buffer.api.internal.ResourceSupport;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
@ -25,7 +26,8 @@ import org.junit.jupiter.params.provider.MethodSource;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import static io.netty.buffer.api.internal.Statics.asRS;
|
||||
import static io.netty.buffer.api.internal.Statics.acquire;
|
||||
import static io.netty.buffer.api.internal.Statics.isOwned;
|
||||
import static java.nio.ByteOrder.BIG_ENDIAN;
|
||||
import static java.nio.ByteOrder.LITTLE_ENDIAN;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@ -41,7 +43,7 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
buf.writeByte((byte) 1);
|
||||
buf.writeByte((byte) 2);
|
||||
try (Buffer inner = asRS(buf).acquire()) {
|
||||
try (Buffer inner = acquire((ResourceSupport<?, ?>) buf)) {
|
||||
inner.writeByte((byte) 3);
|
||||
inner.writeByte((byte) 4);
|
||||
inner.writeByte((byte) 5);
|
||||
@ -75,7 +77,7 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
try (BufferAllocator allocator = fixture.createAllocator()) {
|
||||
var buf = allocator.allocate(8);
|
||||
buf.close();
|
||||
assertThrows(IllegalStateException.class, () -> asRS(buf).acquire());
|
||||
assertThrows(IllegalStateException.class, () -> acquire((ResourceSupport<?, ?>) buf));
|
||||
}
|
||||
}
|
||||
|
||||
@ -166,11 +168,11 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
try (BufferAllocator allocator = fixture.createAllocator();
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
try (Buffer copy = buf.copy()) {
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(asRS(copy).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) copy));
|
||||
copy.send().discard();
|
||||
}
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
buf.send().discard();
|
||||
}
|
||||
}
|
||||
@ -181,11 +183,11 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
try (BufferAllocator allocator = fixture.createAllocator();
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
try (Buffer copy = buf.copy(0, 8)) {
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(asRS(copy).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) copy));
|
||||
copy.send().discard();
|
||||
}
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
buf.send().discard();
|
||||
}
|
||||
}
|
||||
@ -230,11 +232,11 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
try (BufferAllocator allocator = fixture.createAllocator();
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
try (Buffer copy = buf.copy()) {
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
copy.send().discard();
|
||||
}
|
||||
// Verify that the copy is closed properly afterwards.
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
buf.send().receive().close();
|
||||
}
|
||||
}
|
||||
@ -245,11 +247,11 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
try (BufferAllocator allocator = fixture.createAllocator();
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
try (Buffer copy = buf.copy(0, 8)) {
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
copy.send().discard();
|
||||
}
|
||||
// Verify that the copy is closed properly afterwards.
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
}
|
||||
}
|
||||
|
||||
@ -260,7 +262,7 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
assertThrows(IndexOutOfBoundsException.class, () -> buf.copy(-1, 1));
|
||||
// Verify that the copy is closed properly afterwards.
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
}
|
||||
}
|
||||
|
||||
@ -272,7 +274,7 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
assertThrows(IllegalArgumentException.class, () -> buf.copy(0, -1));
|
||||
assertThrows(IllegalArgumentException.class, () -> buf.copy(2, -1));
|
||||
// Verify that the copy is closed properly afterwards.
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
}
|
||||
}
|
||||
|
||||
@ -285,7 +287,7 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
buf.copy(0, 8).close(); // This is still fine.
|
||||
assertThrows(IndexOutOfBoundsException.class, () -> buf.copy(1, 8));
|
||||
// Verify that the copy is closed properly afterwards.
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
}
|
||||
}
|
||||
|
||||
@ -296,7 +298,7 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
buf.copy(0, 0).close(); // This is fine.
|
||||
// Verify that the copy is closed properly afterwards.
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
}
|
||||
}
|
||||
|
||||
@ -307,13 +309,13 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
Buffer buf = allocator.allocate(8);
|
||||
buf.writeInt(42);
|
||||
try (Buffer copy = buf.copy()) {
|
||||
assertTrue(asRS(copy).isOwned());
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) copy));
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
buf.close();
|
||||
assertFalse(buf.isAccessible());
|
||||
assertTrue(asRS(copy).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) copy));
|
||||
try (Buffer receive = copy.send().receive()) {
|
||||
assertTrue(asRS(receive).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) receive));
|
||||
assertFalse(copy.isAccessible());
|
||||
}
|
||||
}
|
||||
@ -378,7 +380,7 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
try (BufferAllocator allocator = fixture.createAllocator();
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
buf.writeInt(1);
|
||||
try (Buffer acquired = asRS(buf).acquire()) {
|
||||
try (Buffer acquired = acquire((ResourceSupport<?, ?>) buf)) {
|
||||
var exc = assertThrows(IllegalStateException.class, () -> acquired.split());
|
||||
assertThat(exc).hasMessageContaining("owned");
|
||||
}
|
||||
@ -390,7 +392,7 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
public void splitOnOffsetOfNonOwnedBufferMustThrow(Fixture fixture) {
|
||||
try (BufferAllocator allocator = fixture.createAllocator();
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
try (Buffer acquired = asRS(buf).acquire()) {
|
||||
try (Buffer acquired = acquire((ResourceSupport<?, ?>) buf)) {
|
||||
var exc = assertThrows(IllegalStateException.class, () -> acquired.split(4));
|
||||
assertThat(exc).hasMessageContaining("owned");
|
||||
}
|
||||
@ -533,7 +535,7 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
buf.writeLong(0x0102030405060708L);
|
||||
try (Buffer copy = buf.copy()) {
|
||||
buf.close();
|
||||
assertTrue(asRS(copy).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) copy));
|
||||
try (Buffer split = copy.split(4)) {
|
||||
split.reset().ensureWritable(Long.BYTES);
|
||||
copy.reset().ensureWritable(Long.BYTES);
|
||||
@ -663,7 +665,7 @@ public class BufferReferenceCountingTest extends BufferTestSupport {
|
||||
try (BufferAllocator allocator = fixture.createAllocator();
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
buf.makeReadOnly();
|
||||
try (Buffer acquire = asRS(buf).acquire()) {
|
||||
try (Buffer acquire = acquire((ResourceSupport<?, ?>) buf)) {
|
||||
assertTrue(acquire.readOnly());
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ import io.netty.buffer.api.Buffer;
|
||||
import io.netty.buffer.api.BufferAllocator;
|
||||
import io.netty.buffer.api.BufferRef;
|
||||
import io.netty.buffer.api.Send;
|
||||
import io.netty.buffer.api.internal.ResourceSupport;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
@ -27,7 +28,8 @@ import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.SynchronousQueue;
|
||||
|
||||
import static io.netty.buffer.api.internal.Statics.asRS;
|
||||
import static io.netty.buffer.api.internal.Statics.acquire;
|
||||
import static io.netty.buffer.api.internal.Statics.isOwned;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
@ -78,12 +80,12 @@ public class BufferSendTest extends BufferTestSupport {
|
||||
void sendMustThrowWhenBufIsAcquired(Fixture fixture) {
|
||||
try (BufferAllocator allocator = fixture.createAllocator();
|
||||
Buffer buf = allocator.allocate(8)) {
|
||||
try (Buffer ignored = asRS(buf).acquire()) {
|
||||
assertFalse(asRS(buf).isOwned());
|
||||
try (Buffer ignored = acquire((ResourceSupport<?, ?>) buf)) {
|
||||
assertFalse(isOwned((ResourceSupport<?, ?>) buf));
|
||||
assertThrows(IllegalStateException.class, buf::send);
|
||||
}
|
||||
// Now send() should work again.
|
||||
assertTrue(asRS(buf).isOwned());
|
||||
assertTrue(isOwned((ResourceSupport<?, ?>) buf));
|
||||
buf.send().receive().close();
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ import io.netty.buffer.api.Buffer;
|
||||
import io.netty.buffer.api.BufferAllocator;
|
||||
import io.netty.buffer.api.CompositeBuffer;
|
||||
import io.netty.buffer.api.MemoryManagers;
|
||||
import io.netty.buffer.api.internal.ResourceSupport;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
|
||||
@ -42,7 +43,7 @@ import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.stream.Stream.Builder;
|
||||
|
||||
import static io.netty.buffer.api.internal.Statics.asRS;
|
||||
import static io.netty.buffer.api.internal.Statics.acquire;
|
||||
import static java.nio.ByteOrder.BIG_ENDIAN;
|
||||
import static java.nio.ByteOrder.LITTLE_ENDIAN;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@ -335,8 +336,8 @@ public abstract class BufferTestSupport {
|
||||
}
|
||||
|
||||
assertThrows(IllegalStateException.class, () -> buf.split());
|
||||
assertThrows(IllegalStateException.class, () -> asRS(buf).send());
|
||||
assertThrows(IllegalStateException.class, () -> asRS(buf).acquire());
|
||||
assertThrows(IllegalStateException.class, () -> buf.send());
|
||||
assertThrows(IllegalStateException.class, () -> acquire((ResourceSupport<?, ?>) buf));
|
||||
assertThrows(IllegalStateException.class, () -> buf.copy());
|
||||
assertThrows(IllegalStateException.class, () -> buf.openCursor());
|
||||
assertThrows(IllegalStateException.class, () -> buf.openCursor(0, 0));
|
||||
|
@ -30,7 +30,6 @@ import java.util.concurrent.ThreadLocalRandom;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import static io.netty.buffer.api.internal.Statics.asRS;
|
||||
import static io.netty.buffer.api.tests.BufferTestSupport.assertEquals;
|
||||
import static io.netty.buffer.api.CompositeBuffer.compose;
|
||||
import static io.netty.buffer.api.tests.BufferTestSupport.assertReadableEquals;
|
||||
|
Loading…
Reference in New Issue
Block a user