You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/02/18 16:50:06 UTC
svn commit: r1072029 -
/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/utils/ByteBufferUtil.java
Author: jbellis
Date: Fri Feb 18 15:50:05 2011
New Revision: 1072029
URL: http://svn.apache.org/viewvc?rev=1072029&view=rev
Log:
use get, put bulk methods in ByteBufferUtil
patch by jbellis; reviewed by slebresne for CASSANDRA-2186
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/utils/ByteBufferUtil.java
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/utils/ByteBufferUtil.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/utils/ByteBufferUtil.java?rev=1072029&r1=1072028&r2=1072029&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/utils/ByteBufferUtil.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/utils/ByteBufferUtil.java Fri Feb 18 15:50:05 2011
@@ -129,25 +129,19 @@ public class ByteBufferUtil
*/
public static byte[] getArray(ByteBuffer buffer)
{
- return getArray(buffer, buffer.position(), buffer.remaining());
- }
+ int length = buffer.remaining();
- public static byte[] getArray(ByteBuffer b, int start, int length)
- {
- if (b.hasArray())
+ if (buffer.hasArray())
{
- if (b.arrayOffset() == 0 && start == 0 && length == b.array().length)
- return b.array();
+ int start = buffer.position();
+ if (buffer.arrayOffset() == 0 && start == 0 && length == buffer.array().length)
+ return buffer.array();
else
- return Arrays.copyOfRange(b.array(), start + b.arrayOffset(), start + length + b.arrayOffset());
+ return Arrays.copyOfRange(buffer.array(), start + buffer.arrayOffset(), start + length + buffer.arrayOffset());
}
-
+ // else, DirectByteBuffer.get() is the fastest route
byte[] bytes = new byte[length];
-
- for (int i = 0; i < length; i++)
- {
- bytes[i] = b.get(start++);
- }
+ buffer.duplicate().get(bytes);
return bytes;
}
@@ -210,8 +204,7 @@ public class ByteBufferUtil
}
else
{
- for (int i = o.position(); i < o.limit(); i++)
- clone.put(o.get(i));
+ clone.put(o.duplicate());
clone.flip();
}
@@ -221,16 +214,9 @@ public class ByteBufferUtil
public static void arrayCopy(ByteBuffer buffer, int position, byte[] bytes, int offset, int length)
{
if (buffer.hasArray())
- {
System.arraycopy(buffer.array(), buffer.arrayOffset() + position, bytes, offset, length);
- }
else
- {
- for (int i = 0; i < length; i++)
- {
- bytes[offset++] = buffer.get(position++);
- }
- }
+ ((ByteBuffer) buffer.duplicate().position(position)).get(bytes, offset, length);
}
public static void writeWithLength(ByteBuffer bytes, DataOutput out) throws IOException