From 8cab60cd2b08d1b209575c11ba2e3d786be7e9d7 Mon Sep 17 00:00:00 2001 From: Sean Busbey Date: Tue, 12 Mar 2019 23:26:30 -0500 Subject: [PATCH] HBASE-22044 Restore compat for ByteBufferUtils. Also deprecated because it will be IA.Private in HBase 3.0 (cherry picked from commit f13a897bf7484f0bc512048e7a16f0d8f04cc238) Signed-off-by: Andrew Purtell --- .../hadoop/hbase/util/ByteBufferUtils.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java index 36fdec5148e..fb687fa1243 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java @@ -36,8 +36,10 @@ import sun.nio.ch.DirectBuffer; /** * Utility functions for working with byte buffers, such as reading/writing * variable-length long numbers. + * @deprecated This class will become IA.Private in HBase 3.0. Downstream folks should avoid using it. */ @SuppressWarnings("restriction") +@Deprecated @InterfaceAudience.Public @InterfaceStability.Evolving public final class ByteBufferUtils { @@ -650,6 +652,28 @@ public final class ByteBufferUtils { } } + /** + * Find length of common prefix of two parts in the buffer + * @param buffer Where parts are located. + * @param offsetLeft Offset of the first part. + * @param offsetRight Offset of the second part. + * @param limit Maximal length of common prefix. + * @return Length of prefix. + */ + public static int findCommonPrefix(ByteBuffer buffer, int offsetLeft, + int offsetRight, int limit) { + int prefix = 0; + + for (; prefix < limit; ++prefix) { + if (buffer.get(offsetLeft + prefix) != buffer.get(offsetRight + prefix)) { + break; + } + } + + return prefix; + } + + /** * Find length of common prefix in two arrays. * @param left Array to be compared.