diff --git a/gradle.properties b/gradle.properties index a52943c..53eb693 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ group = org.threadly version = 4.13 -threadlyVersion = 5.41 +threadlyVersion = 5.42 diff --git a/src/main/java/org/threadly/litesockets/buffers/AbstractMergedByteBuffers.java b/src/main/java/org/threadly/litesockets/buffers/AbstractMergedByteBuffers.java index bbacae3..75978ba 100644 --- a/src/main/java/org/threadly/litesockets/buffers/AbstractMergedByteBuffers.java +++ b/src/main/java/org/threadly/litesockets/buffers/AbstractMergedByteBuffers.java @@ -31,7 +31,6 @@ public AbstractMergedByteBuffers(boolean readOnly) { } protected abstract void doAppend(final ByteBuffer bb); - protected abstract void addToFront(final ByteBuffer bb); protected abstract byte get(int pos); public abstract AbstractMergedByteBuffers duplicate(); public abstract AbstractMergedByteBuffers duplicateAndClean(); @@ -58,9 +57,7 @@ public void add(final byte[] ...bas) { @Override public void add(final ByteBuffer ...buffers) { for(ByteBuffer buffer: buffers) { - if(buffer.hasRemaining()) { - doAppend(buffer.duplicate()); - } + doAppend(buffer); } } @@ -68,10 +65,7 @@ public void add(final ByteBuffer ...buffers) { public void add(final MergedByteBuffers ...mbbs) { for(MergedByteBuffers mbb: mbbs) { while(mbb.hasRemaining()) { - ByteBuffer bb = mbb.popBuffer(); - if(bb.hasRemaining()) { - doAppend(bb); - } + doAppend(mbb.popBuffer()); } } } diff --git a/src/main/java/org/threadly/litesockets/buffers/ReuseableMergedByteBuffers.java b/src/main/java/org/threadly/litesockets/buffers/ReuseableMergedByteBuffers.java index 37c13f9..9474c2a 100644 --- a/src/main/java/org/threadly/litesockets/buffers/ReuseableMergedByteBuffers.java +++ b/src/main/java/org/threadly/litesockets/buffers/ReuseableMergedByteBuffers.java @@ -39,15 +39,17 @@ public ReuseableMergedByteBuffers(boolean readOnly, ByteBuffer ...bbs) { @Override protected void doAppend(final ByteBuffer bb) { - availableBuffers.add(bb); - currentSize+=bb.remaining(); + if (bb.hasRemaining()) { + availableBuffers.add(bb.duplicate()); + currentSize+=bb.remaining(); + } } @Override public ReuseableMergedByteBuffers duplicate() { final ReuseableMergedByteBuffers mbb = new ReuseableMergedByteBuffers(markReadOnly); for(final ByteBuffer bb: this.availableBuffers) { - mbb.add(bb.duplicate()); + mbb.doAppend(bb); } return mbb; } @@ -59,12 +61,6 @@ public ReuseableMergedByteBuffers duplicateAndClean() { return mbb; } - @Override - protected void addToFront(ByteBuffer bb) { - this.availableBuffers.addFirst(bb.duplicate()); - this.currentSize+=bb.remaining(); - } - @Override public int remaining() { return currentSize; diff --git a/src/main/java/org/threadly/litesockets/buffers/SimpleMergedByteBuffers.java b/src/main/java/org/threadly/litesockets/buffers/SimpleMergedByteBuffers.java index 4a5749a..d07d074 100644 --- a/src/main/java/org/threadly/litesockets/buffers/SimpleMergedByteBuffers.java +++ b/src/main/java/org/threadly/litesockets/buffers/SimpleMergedByteBuffers.java @@ -14,17 +14,18 @@ public class SimpleMergedByteBuffers extends AbstractMergedByteBuffers { private static final ByteBuffer[] EMPTY_BUFFER_ARRAY = new ByteBuffer[] {}; - private final ByteBuffer[] bba; private int currentBuffer = 0; protected long consumedSize = 0; public SimpleMergedByteBuffers(boolean readOnly, ByteBuffer ...bbs) { super(readOnly); - for(ByteBuffer bb: bbs) { - if(bb == null) { + + for (int i = 0; i < bbs.length; i++) { + if(bbs[i] == null) { throw new IllegalArgumentException("Can not add null buffers!"); } + bbs[i] = bbs[i].duplicate(); } if(bbs.length > 0) { bba = bbs; @@ -50,10 +51,6 @@ public SimpleMergedByteBuffers(boolean readOnly, SimpleMergedByteBuffers smbb, B } } - private void doGet(final byte[] destBytes) { - doGet(destBytes, 0, destBytes.length); - } - private void doGet(final byte[] destBytes, int start, int len) { int remainingToCopy = len; @@ -79,16 +76,11 @@ protected void doAppend(ByteBuffer bb) { throw new UnsupportedOperationException("Can not add to this buffer!"); } - @Override - protected void addToFront(ByteBuffer bb) { - throw new UnsupportedOperationException("Can not add to this buffer!"); - } - @Override public SimpleMergedByteBuffers duplicate() { ByteBuffer[] bba2 = new ByteBuffer[bba.length-currentBuffer]; for(int i=currentBuffer; i size) { final ByteBuffer bb = first.duplicate(); bb.limit(bb.position()+size); @@ -178,7 +170,7 @@ public ByteBuffer pullBuffer(int size) { return bb; } else { final byte[] result = new byte[size]; - doGet(result); + doGet(result, 0, size); return ByteBuffer.wrap(result); } }