diff --git a/buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java b/buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java index b99527d566..e385fa2c31 100644 --- a/buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java @@ -59,20 +59,12 @@ public abstract class AbstractDerivedByteBuf extends AbstractByteBuf { @Override public final boolean release() { - if (unwrap().release()) { - deallocate(); - return true; - } - return false; + return unwrap().release(); } @Override public final boolean release(int decrement) { - if (unwrap().release(decrement)) { - deallocate(); - return true; - } - return false; + return unwrap().release(decrement); } @Override @@ -84,9 +76,4 @@ public abstract class AbstractDerivedByteBuf extends AbstractByteBuf { public ByteBuffer nioBuffer(int index, int length) { return unwrap().nioBuffer(index, length); } - - /** - * Called when the wrapped {@link ByteBuf} was released due calling of {@link #release()} or {@link #release(int)}. - */ - protected void deallocate() { } } diff --git a/buffer/src/main/java/io/netty/buffer/DuplicatedByteBuf.java b/buffer/src/main/java/io/netty/buffer/DuplicatedByteBuf.java index a4a5611f64..d6f89644cd 100644 --- a/buffer/src/main/java/io/netty/buffer/DuplicatedByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/DuplicatedByteBuf.java @@ -33,19 +33,11 @@ import java.nio.channels.ScatteringByteChannel; */ public class DuplicatedByteBuf extends AbstractDerivedByteBuf { - private ByteBuf buffer; + private final ByteBuf buffer; public DuplicatedByteBuf(ByteBuf buffer) { super(buffer.maxCapacity()); - init(buffer); - } - DuplicatedByteBuf(int maxCapacity) { - super(maxCapacity); - } - - final void init(ByteBuf buffer) { - maxCapacity(buffer.maxCapacity()); if (buffer instanceof DuplicatedByteBuf) { this.buffer = ((DuplicatedByteBuf) buffer).buffer; } else { @@ -53,8 +45,6 @@ public class DuplicatedByteBuf extends AbstractDerivedByteBuf { } setIndex(buffer.readerIndex(), buffer.writerIndex()); - markReaderIndex(); - markWriterIndex(); } @Override diff --git a/buffer/src/main/java/io/netty/buffer/PooledByteBuf.java b/buffer/src/main/java/io/netty/buffer/PooledByteBuf.java index 5430a622c6..006358b7fd 100644 --- a/buffer/src/main/java/io/netty/buffer/PooledByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/PooledByteBuf.java @@ -70,16 +70,6 @@ abstract class PooledByteBuf extends AbstractReferenceCountedByteBuf { cache = null; } - @Override - public ByteBuf slice(int index, int length) { - return PooledSlicedByteBuf.newInstance(this, index, length); - } - - @Override - public ByteBuf duplicate() { - return PooledDuplicatedByteBuf.newInstance(this); - } - @Override public final int capacity() { return length; diff --git a/buffer/src/main/java/io/netty/buffer/PooledDuplicatedByteBuf.java b/buffer/src/main/java/io/netty/buffer/PooledDuplicatedByteBuf.java deleted file mode 100644 index ec6156b39e..0000000000 --- a/buffer/src/main/java/io/netty/buffer/PooledDuplicatedByteBuf.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2015 The Netty Project - * - * The Netty Project licenses this file to you under the Apache License, - * version 2.0 (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ -package io.netty.buffer; - -import io.netty.util.Recycler; - -final class PooledDuplicatedByteBuf extends DuplicatedByteBuf { - - private static final Recycler RECYCLER = new Recycler() { - @Override - protected PooledDuplicatedByteBuf newObject(Handle handle) { - return new PooledDuplicatedByteBuf(handle); - } - }; - - static PooledDuplicatedByteBuf newInstance(ByteBuf buffer) { - PooledDuplicatedByteBuf buf = RECYCLER.get(); - buf.init(buffer); - return buf; - } - - private final Recycler.Handle recyclerHandle; - - private PooledDuplicatedByteBuf(Recycler.Handle recyclerHandle) { - super(0); - this.recyclerHandle = recyclerHandle; - } - - @Override - public ByteBuf slice(int index, int length) { - return PooledSlicedByteBuf.newInstance(this, index, length); - } - - @Override - public ByteBuf duplicate() { - return newInstance(this); - } - - @Override - protected void deallocate() { - RECYCLER.recycle(this, recyclerHandle); - } -} diff --git a/buffer/src/main/java/io/netty/buffer/PooledSlicedByteBuf.java b/buffer/src/main/java/io/netty/buffer/PooledSlicedByteBuf.java deleted file mode 100644 index 15932f9289..0000000000 --- a/buffer/src/main/java/io/netty/buffer/PooledSlicedByteBuf.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2015 The Netty Project - * - * The Netty Project licenses this file to you under the Apache License, - * version 2.0 (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ -package io.netty.buffer; - -import io.netty.util.Recycler; - -final class PooledSlicedByteBuf extends SlicedByteBuf { - - private static final Recycler RECYCLER = new Recycler() { - @Override - protected PooledSlicedByteBuf newObject(Handle handle) { - return new PooledSlicedByteBuf(handle); - } - }; - - static PooledSlicedByteBuf newInstance(ByteBuf buffer, int index, int length) { - PooledSlicedByteBuf buf = RECYCLER.get(); - buf.init(buffer, index, length); - return buf; - } - - private final Recycler.Handle recyclerHandle; - - private PooledSlicedByteBuf(Recycler.Handle recyclerHandle) { - super(0); - this.recyclerHandle = recyclerHandle; - } - - @Override - public ByteBuf slice(int index, int length) { - return newInstance(this, index, length); - } - - @Override - public ByteBuf duplicate() { - return PooledDuplicatedByteBuf.newInstance(this); - } - - @Override - protected void deallocate() { - RECYCLER.recycle(this, recyclerHandle); - } -} diff --git a/buffer/src/main/java/io/netty/buffer/SlicedByteBuf.java b/buffer/src/main/java/io/netty/buffer/SlicedByteBuf.java index 05caf0f41d..7683e13bc2 100644 --- a/buffer/src/main/java/io/netty/buffer/SlicedByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/SlicedByteBuf.java @@ -34,20 +34,12 @@ import java.nio.channels.ScatteringByteChannel; */ public class SlicedByteBuf extends AbstractDerivedByteBuf { - private ByteBuf buffer; - private int adjustment; - private int length; + private final ByteBuf buffer; + private final int adjustment; + private final int length; public SlicedByteBuf(ByteBuf buffer, int index, int length) { super(length); - init(buffer, index, length); - } - - SlicedByteBuf(int length) { - super(length); - } - - final void init(ByteBuf buffer, int index, int length) { if (index < 0 || index > buffer.capacity() - length) { throw new IndexOutOfBoundsException(buffer + ".slice(" + index + ", " + length + ')'); } @@ -63,9 +55,8 @@ public class SlicedByteBuf extends AbstractDerivedByteBuf { adjustment = index; } this.length = length; - maxCapacity(length); - setIndex(0, length); - discardMarks(); + + writerIndex(length); } @Override