You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2016/09/30 14:20:23 UTC
svn commit: r1762914 - in /qpid/java/trunk:
bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java
common/src/main/java/org/apache/qpid/bytebuffer/SlicedQpidByteBuffer.java
Author: kwall
Date: Fri Sep 30 14:20:22 2016
New Revision: 1762914
URL: http://svn.apache.org/viewvc?rev=1762914&view=rev
Log:
QPID-6803: [Java Broker] Have SlicedQpidByteBuffer delegate to bulk operations instead of byte by byte
Modified:
qpid/java/trunk/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/SlicedQpidByteBuffer.java
Modified: qpid/java/trunk/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java?rev=1762914&r1=1762913&r2=1762914&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java (original)
+++ qpid/java/trunk/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java Fri Sep 30 14:20:22 2016
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.when;
import java.io.File;
import java.nio.ByteBuffer;
import java.util.Arrays;
+import java.util.Collections;
import org.apache.qpid.bytebuffer.QpidByteBuffer;
import org.apache.qpid.framing.AMQShortString;
@@ -123,10 +124,9 @@ public class BDBMessageStoreTest extends
DeliveryProperties delProps_0_10 = createDeliveryProperties_0_10();
Header header_0_10 = new Header(delProps_0_10, msgProps_0_10);
- ByteBuffer buffer = ByteBuffer.allocate(completeContentBody_0_10.remaining());
- completeContentBody_0_10.copyTo(buffer);
MessageTransfer xfr_0_10 = new MessageTransfer("destination", MessageAcceptMode.EXPLICIT,
- MessageAcquireMode.PRE_ACQUIRED, header_0_10, buffer);
+ MessageAcquireMode.PRE_ACQUIRED, header_0_10,
+ Collections.singletonList(completeContentBody_0_10));
MessageMetaData_0_10 messageMetaData_0_10 = new MessageMetaData_0_10(xfr_0_10);
MessageHandle<MessageMetaData_0_10> messageHandle_0_10 = bdbStore.addMessage(messageMetaData_0_10);
Modified: qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/SlicedQpidByteBuffer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/SlicedQpidByteBuffer.java?rev=1762914&r1=1762913&r2=1762914&view=diff
==============================================================================
--- qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/SlicedQpidByteBuffer.java (original)
+++ qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/SlicedQpidByteBuffer.java Fri Sep 30 14:20:22 2016
@@ -255,10 +255,11 @@ final class SlicedQpidByteBuffer extends
throw new BufferOverflowException();
}
- for (int i = 0; i < sourceRemaining; i++)
- {
- put(src.get());
- }
+ final int length = src.remaining();
+ ByteBuffer dup = getDuplicateForBulk();
+ dup.put(src);
+ _position += length;
+
return this;
}
@@ -276,10 +277,9 @@ final class SlicedQpidByteBuffer extends
throw new BufferOverflowException();
}
- for (int i = 0; i < sourceRemaining; i++)
- {
- put(src.get());
- }
+ put(src.getUnderlyingBuffer());
+ src.updateFromLastUnderlying();
+
return this;
}
@@ -293,29 +293,18 @@ final class SlicedQpidByteBuffer extends
throw new BufferUnderflowException();
}
- // TODO consider using a slice of the underlying BB, followed by a bulk method
- for (int i = offset; i < offset + length; i++)
- {
- dst[i] = get();
- }
-
+ ByteBuffer dup = getDuplicateForBulk();
+ dup.get(dst, offset, length);
+ _position += length;
return this;
}
@Override
public QpidByteBuffer get(final ByteBuffer dst)
{
- int destinationRemaining = dst.remaining();
int remaining = remaining();
- if (destinationRemaining < remaining)
- {
- throw new BufferUnderflowException();
- }
-
- for (int i = 0; i < remaining; i++)
- {
- dst.put(get());
- }
+ copyTo(dst);
+ _position += remaining;
return this;
}
@@ -329,10 +318,8 @@ final class SlicedQpidByteBuffer extends
throw new BufferUnderflowException();
}
- for (int i = 0; i < remaining; i++)
- {
- dst.put(get(_position + i));
- }
+ ByteBuffer dup = getDuplicateForBulk();
+ dst.put(dup);
}
@Override
@@ -345,10 +332,7 @@ final class SlicedQpidByteBuffer extends
throw new BufferOverflowException();
}
- for (int i = 0; i < sourceRemaining; i++)
- {
- put(source.get(i));
- }
+ put(source.getUnderlyingBuffer().duplicate());
}
@Override
@@ -383,10 +367,8 @@ final class SlicedQpidByteBuffer extends
int remaining = remaining();
if (_position > 0 && _position < _limit)
{
- for (int i = 0; i < remaining; i++)
- {
- put(i, get(_position + i));
- }
+ getUnderlyingBuffer().compact();
+ _lastUnderlyingBuffer = null;
}
_position = remaining;
_limit = _capacity;
@@ -487,10 +469,10 @@ final class SlicedQpidByteBuffer extends
throw new BufferOverflowException();
}
- for (int i = offset; i < offset + length; i++)
- {
- put(src[i]);
- }
+ ByteBuffer dup = getDuplicateForBulk();
+ dup.put(src, offset, length);
+ _position += length;
+
return this;
}
@@ -545,10 +527,8 @@ final class SlicedQpidByteBuffer extends
throw new BufferUnderflowException();
}
- for (int i = 0; i < dst.length; i++)
- {
- dst[i] = get(_position + i);
- }
+ ByteBuffer dup = getDuplicateForBulk();
+ dup.get(dst);
}
@Override
@@ -619,13 +599,13 @@ final class SlicedQpidByteBuffer extends
return _buffer.getFloat(index + _offset);
}
-
@Override
public QpidByteBuffer slice()
{
return new SlicedQpidByteBuffer(0, remaining(), remaining(), _offset + _position, _ref);
}
+
@Override
public QpidByteBuffer view(final int offset, final int length)
{
@@ -682,6 +662,14 @@ final class SlicedQpidByteBuffer extends
_lastUnderlyingBuffer = null;
}
+ private ByteBuffer getDuplicateForBulk()
+ {
+ ByteBuffer dup = _buffer.duplicate();
+ dup.position(_offset + _position);
+ dup.limit(_offset + _limit);
+ return dup;
+ }
+
private void checkBounds(final byte[] array, final int offset, final int length)
{
if (offset < 0 || (offset > 0 && offset > array.length - 1) || length < 0 || length > array.length)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org